【问题标题】:Does an Event fire when adding a property to the window element?向窗口元素添加属性时是否会触发事件?
【发布时间】:2012-07-31 17:41:16
【问题描述】:

在加载 javascript 库(如 jQuery)时,它们倾向于在 Window 元素上创建一个对象。

我正在尝试找出如何检测库刚刚加载的时间,因此我已经尝试检测窗口对象的属性更改...

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

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

...这不起作用。

也许有人知道解决此解决方案的另一种方法以及检测外部库何时加载的机制。

谢谢, 尼克

附言我查看了脚本标记的 onload 标记,但我担心它在 W3C 中是 not

p.p.s.最终,我正在尝试实现一个可以安全使用 jQuery 代码的函数。

【问题讨论】:

标签: javascript jquery html dom javascript-events


【解决方案1】:

如果你的 js 代码低于 script 标签,那么不用担心,html 渲染会在 script 标签未加载时停止,所以如果你的 js 低于 script 标签,则库已经加载。

您还可以检查某些变量是否存在(例如$)。

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

或者在循环中通过间隔:

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

【讨论】:

  • 您好,谢谢您的回复... 1)。我不喜欢使用定时循环检查,我认为事件是去这里的正确方法...... 2)。我试图找到有关通过 SCRIPT SRC 加载外部 JavaScript 的文档,然后在下面的另一个 SCRIPT 标记中包含引用外部 JS 代码的代码,但我找不到任何说明浏览器将等到它完全加载后再继续的内容。 .. 它只是一个已知的“东西”吗?我不敢相信没有基于事件的解决方案,也许像 Flash/Flex 中的 INITIALISE 事件?感谢您的帮助!
  • 我正在开发一个项目,该项目将 jquery 包装在一个 require 捆绑的 .js 文件中,但我需要在加载 require 包之前更改 UI 样式。我的想法是,一旦 jQuery 被初始化,我就可以执行 $('document').ready(function(){ //UI style change code here });
  • 我希望我可以在窗口对象上有一个侦听器,每次添加属性时都会执行该侦听器。然后在那个监听器中检查是否添加了“jQuery”,然后执行 .ready() 函数等...
猜你喜欢
  • 2014-08-16
  • 1970-01-01
  • 2013-09-14
  • 2011-09-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-16
相关资源
最近更新 更多