我有一个JavaScript文件,我想要包含在我的WordPress页面中,所以我可以在文档的onload
元素的body
事件中执行特定的函数。
如何最好地将我的方法添加到WordPress,以便执行它,而不会破坏任何可能依赖于onload机制的其他函数?我的意思是,我可以简单地重新定义body元素和让它调用我的方法,但也许还有其他插件需要使用相同的事件处理程序。
WordPress中是否有任何机制,以便我可以追加方法来处理onload事件(而不是完全重新定义onload
)?
1)重新定义onload
:
<body onload="myFunc()">
// ...
</body>
2)与追加:
<body onload="wp_Some_Magic_Onload_Hook()">
// ...
</body>
与
function wp_Some_Magic_Onload_Hook() {
myFunc();
otherFuncs();
// ...
}
答案 0 :(得分:2)
body.onload
是一种源自古代的技术。它导致许多冲突,例如有多个模块试图听取事件。除非您针对那些远古时代的浏览器(例如IE 6),否则您可能希望使用更现代的解决方案。
如果jQuery可用(并且在大多数WordPress站点上,否则只是wp_enqueue_script
),编写如下脚本:
function myFunc() {
// Do awesome stuff here!
}
jQuery(myFunc);
一旦文档加载,这将调用myFunc
。确保在执行脚本之前加载jQuery。
答案 1 :(得分:0)
不同之处在于window.onload
在DOM Level 0事件模型中定义,并将删除所有早期的寄存器事件。它是一个本土的&#39;从旧API调用。
原型javascript框架中的Event.observe
将确定可用的最佳事件附件。门面图案。在现代浏览器中,将调用addEventListener - 如果Internet Explorer低于版本9,则调用attachEvent。在旧浏览器中,将调用onload。
很明显,Facade会选择最好的选项,例如Event.observe for prototype或.load,例如jQuery。
DOM Level 2事件模型中的方法优于DOM Level 0事件模型方法,因为它们充当观察者并且不会删除以前的处理程序。
Event.observe(window, 'load', function() {
alert("Hello World!");
});