将JavaScript方法添加到WordPress的onload事件中

时间:2015-05-20 13:19:52

标签: javascript html wordpress

我有一个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();
   // ...
 }

2 个答案:

答案 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!");
});