javascript - 动态添加.js文件,如何知道它何时准备好?

标签 javascript jquery callback load

为了仅在触摸设备中加载 jquery 滑动脚本,我使用现代化器检测它并附加脚本(如果是触摸),如下所示:

/**/
if ( modernizer.touch ) {
    var js = jQuery("<script>");
    css.attr({
      type:  "text/css",
      src: base_url + "/js/jquery-touch-swipe.js?p1"
    });
    $("head").append(css);
    $this.swipe( function( e, dx, dy ){
        if( dx < 0 ){
            $this.find('.next').click();
        } else {
            $this.find('.prev').click();
        }
    });
}

问题是,之后,swipe 功能还没有准备好。我可以使用 setTimeout 但我也不能确定,

如何确保附加脚本已准备就绪?

我尝试过这样的:

    if ( modernizer.touch ) {
        var js = jQuery("<script>");
        css.attr({
          type:  "text/css",
          src: base_url + "/js/jquery-touch-swipe.js?p1",
          id: 'swipe'
        });
        $("head").append(css);
        $('#swipe').load(function() {
            $this.swipe( function( e, dx, dy ){
                if( dx < 0 ){
                    $this.find('.next').click();
                } else {
                    $this.find('.prev').click();
                }
            });
        });


}

但没有成功

最佳答案

您可以使用$.getScript并使用其成功回调函数,该函数将在脚本加载后执行但不一定执行。

if (Modernizr.touch) {
    $.getScript(base_url + "/js/jquery-touch-swipe.js?p1", function () {
        //Operation which you want to perform
    });
}

关于javascript - 动态添加.js文件,如何知道它何时准备好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24573096/

相关文章:

Javascript keyup 没有按预期工作,它在我没有从按钮上移开手指的情况下执行

javascript - 在内容可编辑的段落中存在的粗体元素内设置插入符号(光标)

javascript - 获取切换类的长度

javascript - 使用脚本自动执行任务

JavaScript 迭代与过滤器映射

javascript - 正则表达式 - 从 PHP 到 JS

java - java中是否可以回调外部嵌套类?

javascript - 如何支持 API 调用以使用 Promise 或带有标准 Promise 的回调,无延迟或外部 Promise 库?

wpf mvvm threading.Timer 和 TimerCallback 问题

javascript - JS : Iterate over array, 在通知中按顺序显示每个项目