相关疑难解决方法(0)

加载javascript异步,然后在执行回调之前检查加载的DOM

问题:
异步加载js文件,然后在执行加载文件的回调之前检查是否加载了dom.

编辑:我们不使用jQuery; 我们使用Prototype.
编辑:为代码示例添加了更多注释.

大家好,

我正在尝试异步加载我的所有js文件,以防止它们阻塞页面的其余部分.但是当脚本加载并调用回调时,我需要知道DOM是否已经加载,所以我知道如何构造回调.见下文:

//load asynchronously
(function(){
        var e = document.createElement('script'); 
        e.type = "text/javascript";
        e.async = true;
        e.src = srcstr; 
        // a little magic to make the callback happen
        if(navigator.userAgent.indexOf("Opera")){
            e.text = "initPage();";
        }else if(navigator.userAgent.indexOf("MSIE")){
            e.onreadystatechange = initPage;
        }else{
            e.innerHTML = "initPage();";
        }
        // attach the file to the document
        document.getElementsByTagName('head')[0].appendChild(e);
})();

initPageHelper = function(){ 
    //requires DOM be loaded
}

initPage = function(){
    if(domLoaded){ // if dom is already loaded, just call the function
        initPageHelper(); …
Run Code Online (Sandbox Code Playgroud)

javascript dom asynchronous callback prototypejs

10
推荐指数
1
解决办法
2万
查看次数

动态加载脚本

我正在我的代码中动态加载一些YUI脚本以响应Ajax请求.在发出请求时,DOM和页面被完全加载 - 这是对用户事件的响应.

作为孩子,我将标签添加到头部.但我偶然发现了一些问题:

我在Yahoo!上添加了两个YUI脚本.CDN和我自己的内联脚本负责创建对象,添加事件侦听器和呈现YUI小部件.但是,当我的脚本运行YUI脚本时,我没有加载但是给我错误而没有按照我的预期运行.

当YUI脚本完全加载时,有一种方法只运行我的脚本(或定义一个要运行的函数)?

html javascript yui javascript-events

5
推荐指数
2
解决办法
2745
查看次数

在js中加载jQuery,然后执行依赖于它的脚本

我有一个独特的问题 -

我正在设计一个创建小部件的Web应用程序,然后用户可以将这些小部件嵌入到他们自己的页面中(主要是博客文章).我希望他们只需要嵌入一行,所以我只是将该行作为include语句,从我的服务器上取下Javascript.

问题是,我正在使用jQuery构建窗口小部件代码,我需要加载jQuery插件,因为我显然不知道我的用户是否可以使用它.我想'这应该很简单'......

function includeJavaScript(jsFile) {
  var script = document.createElement('script');
  script.src = jsFile;
  script.type = 'text/javascript';
  document.getElementsByTagName('head')[0].appendChild(script);
}

includeJavaScript('http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js');
jQuery();
Run Code Online (Sandbox Code Playgroud)

所以,我将jQuery文件附加到头部,然后尝试运行jQuery函数.麻烦的是,这不起作用!每次运行它时,我都会收到错误,即未定义变量jQuery.我尝试了一些事情.我尝试将jQuery函数放在onLoad触发器中,以便整个页面(包括,可能是jQuery文件)在调用我的脚本之前加载.我尝试将jQuery函数放在一个单独的文件中,并在加载jQuery lib文件后加载它.但是我觉得我错过了一些简单的东西 - 我是jQuery的新手,所以如果我遗漏了一些明显的东西,我道歉......

编辑

好的,我尝试了digitalFresh提供的建议,如下(使用Safari 5,如果有帮助),但我仍然得到相同的错误?

function test() {
    jQuery()
}

var script = document.createElement("script");
script.type = "text/javascript";
script.src = 'http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js';
script.onload = test(); //execute
document.body.appendChild(script);
Run Code Online (Sandbox Code Playgroud)

编辑

好吧,我最终通过Brendan的一个随意的建议让它工作,将调用ITSELF放在'onload'处理程序中,如下所示:

function addLoadEvent(func) { 
      var oldonload = window.onload; 
      if (typeof window.onload != 'function') { 
        window.onload = func; 
      } else { 
        window.onload = function() { 
          if (oldonload) { 
            oldonload(); 
          } 
          func(); 
        } …
Run Code Online (Sandbox Code Playgroud)

javascript jquery

4
推荐指数
1
解决办法
4789
查看次数