1

我正在加载一个 ajax 响应,我需要 jQuery 才能使它有意义。由于延迟原因,我无法在页面加载时加载 jQuery。

因此,每当进行此 ajax 调用时,我希望能够加载 javascipt/css。我阅读了很多关于这方面的文章,但在所有浏览器中都没有对我有用。

我尝试将这些链接/脚本标签放在 javascript 响应中,然后在一段时间(300 毫秒)后在输出中评估 javascript,但这在 chrome 中不起作用。(可能是一些竞争条件)。

我也试过这个:

function addJquery() {
      var script = document.createElement("script");
       script.setAttribute("src", "http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js");
      script.setAttribute('type', 'text/javascript');
      script.addEventListener('load', function() {
          var script = document.createElement("script");
          document.body.appendChild(script);
      }, false);
  document.body.appendChild(script);
}

这适用于 Firefox,但不适用于 Chrome。我不确定我在这里做错了什么。有人可以帮忙解决这个问题吗?

4

2 回答 2

0

如果在加载事件触发后加载 jQuery,则不会出现延迟问题,因为页面已经呈现。

在您的情况下,加载事件不会触发,因为它已经发生了。使用 setInterval 检测 jquery,然后清除间隔。

window.addEventListener('load', function(){

    var script = document.createElement('script');
        script.src = 'http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js';
    document.getElementsByTagName('head')[0].appendChild(script);

    var inter = setInterval(function(){

        if( jQuery ){
            clearInterval(inter);

            //execute jQuery code here
        }

    },100);

},false);

此外,您不再需要在脚本元素上设置类型。每个浏览器都知道它的 javascript。

于 2012-10-04T10:52:10.767 回答
0

使用 ajax 调用加载 jquery 文件(使 ajax async = false)。

于 2012-10-04T10:52:44.140 回答