Javascript 从内部JS代码块调用外部JS函数

Javascript 从内部JS代码块调用外部JS函数,javascript,jquery,html,Javascript,Jquery,Html,我有2个JS块正在使用。一个是我的HTML内部的。它处理触摸功能。另一个是一个外部文件,它是一个内容滑块。基本上,我想使用touchevents来控制滑块,并根据用户在移动设备上滑动的方向移动到上一张/下一张幻灯片,但在台式机上有更传统的控件。是否可以从内部代码块调用外部文件中的函数 HTML文件 <html> <head> <script type="text/javascript" src="js/externalfile.js"></script&

我有2个JS块正在使用。一个是我的HTML内部的。它处理触摸功能。另一个是一个外部文件,它是一个内容滑块。基本上,我想使用touchevents来控制滑块,并根据用户在移动设备上滑动的方向移动到上一张/下一张幻灯片,但在台式机上有更传统的控件。是否可以从内部代码块调用外部文件中的函数

HTML文件

<html>
<head>
<script type="text/javascript" src="js/externalfile.js"></script>
<script>
... lots of code for touchevents ....

function processingRoutine() {

    if ( swipeDirection == 'left' ) {
        // Function below is in external file
        previous();

    } else if ( swipeDirection == 'right' ) {
        // Function below is in external file
        next();

    }
</script>
</head>
<body>
Some HTML code
</body>

是否有一种简单的方法来实现这一点,或者是否有一个内置了此功能的旋转器?

滑块必须以某种方式实例化,并且您可能有一个对它的引用,即,为了使滑块在第一时间工作,您可能会调用类似于
$('.mySlider').slider()的东西
如果你改成
window.mySlider=$('.mySlider').slider()

然后,您可以在“内部”代码中调用
mySlider.next()
或类似程序。

为什么不将代码提取到外部js文件中?我看不出有任何理由需要将它嵌入到脚本标记中,总的来说,我认为这可能是一个糟糕的架构决策


第二个想法,您也可以通过声明一个全局变量并访问它来实现它,尽管这不是一个很好的实践

如果您不介意编辑插件,可以使用jQuery的事件API

// external file

(function($) {

    ....

    $(window).on('slider:next', next);

    $(window).on('slider:previous', previous);

})(jQuery);


// inline js (this should really live in its own file, too)

function processingRoutine () {

    if ( swipeDirection === 'left' ) {

        $(window).trigger('slider:next');

    } else if ( swipeDirection === 'right' ) {

        $(window).trigger('slider:previous');

    }

}

不,这是不可能的,这是故意的。出于某种原因,编写该插件的人认为你不值得拥有该功能:P
// external file

(function($) {

    ....

    $(window).on('slider:next', next);

    $(window).on('slider:previous', previous);

})(jQuery);


// inline js (this should really live in its own file, too)

function processingRoutine () {

    if ( swipeDirection === 'left' ) {

        $(window).trigger('slider:next');

    } else if ( swipeDirection === 'right' ) {

        $(window).trigger('slider:previous');

    }

}