2012-07-31 46 views
0

当加载JavaScript库(如jQuery)时,他们倾向于在Window元素上创建一个对象。将属性添加到窗口元素时是否触发事件?

我试图找出当库刚刚加载,所以我已经走了下来,试图检测窗口对象上的属性变化的路径我如何可以检测...

window.addEventListener("DOMAttrModified", invalidate, false); 

function invalidate(evt) 
{ 
    console.log('attrChange = ' + evt.attrChange); 
} 

...这不起作用。

也许有人知道另一种方法来解决这个解决方案和一种机制来检测外部库何时加载。

感谢, 尼克

附:我已经看过脚本标记的onload标记,但我担心它是W3C中的而不是

p.p.s.最终,我试图在使用jQuery代码安全的地方实现一个函数。

+0

看看这里:http://stackoverflow.com/questions/2457043/most-efficient-method-of-detecting-monitoring-dom-更改 – 2012-07-31 17:45:05

+0

我无法使用jQuery来解决此问题。我需要使用普通的旧香草JavaScript ......任何想法或想法?谢谢! – 2012-07-31 23:06:13

回答

0

如果您的js代码较低,那么脚本标记就不用担心了,当script标记没有加载时,html呈现会停止,所以如果您的js较低,那么库已经加载。

你也可以检查一些变量的存在(如$)。

if (typeof jQuery != 'undefined') { 
    // is loaded 
} else { 
    // is not loaded 
} 

或环流虽然间隔:

var interval = setInterval(function() { 
    if (typeof jQuery != 'undefined') { 
    clearInterval(interval); 
    // do what you want 
    } 
}); 
+0

嘿,谢谢你的回复...... 1)。我不喜欢使用定时循环检查,我认为事件是去这里的正确方法... 2)。我试图找到通过SCRIPT SRC加载外部JavaScript的文档,然后在下面的另一个SCRIPT标签中引用外部JS代码的代码,但是我找不到任何表明浏览器会等到它完全加载才能继续的情况。这只是一个已知的'东西'吗?我不相信有没有基于事件的解决方案,可能就像Flash/Flex中的INITIALISE事件?谢谢你的帮助! – 2012-07-31 23:03:48

+0

我正在处理jquery包装在require捆绑的.js文件中的项目,但我需要在require bundle加载之前进行UI样式更改。我的想法是,只要jQuery被初始化,我就可以执行'$('document')。ready(function(){// UI style change code here');' – 2012-08-01 13:22:47

+0

我希望我可以有一个监听器窗口对象,每次将属性添加到窗口对象。然后在那个监听器中,我检查它是否是添加的“jQuery”,然后执行.ready()函数等等。 – 2012-08-01 13:25:00

相关问题