我对 JavaScript 知之甚少,但尽管如此,我还是试图在我的 wordpress 博客上拼凑一些东西。它不起作用,我不知道如何解决它,嘿,这就是 StackOverflow 的用途,对吧?
首先,错误信息是:
Error: element.dispatchEvent is not a function
Source File: http://.../wp-includes/js/prototype.js?ver=1.6
Line: 3936
它发生在页面加载时。我的页面加载处理程序是这样注册的:
Event.observe(window, 'load', show_dates_as_local_time);
如果我禁用其他一些插件,错误就会消失,这(加上谷歌搜索)让我得出结论,这是原型和 jQuery (被其他一些插件使用)之间的冲突。
其次,我遵循 wordpress 推荐的做法,wp_enqeue_script
将我的 JavaScript 的依赖项添加到 Prototype 库,如下所示:
add_action( 'wp_print_scripts', 'depo_theme_add_javascript' );
function depo_theme_add_javascript() {
wp_enqueue_script('friendly_dates', 'javascript/friendly_dates.js', array('prototype'));
}
现在我也知道 jQuery 和 Prototype 之间存在一些潜在的冲突,这些冲突是使用 jQuerynoConflicts
方法解决的。我试过从不同的地方打电话,但没有用。我认为这不是问题,因为a)noConflict
函数仅与$
变量相关,这似乎不是问题,并且b)我希望wordpress为我解决它,因为它可以......
最后,使用 Venkman 调试器,我确定element
错误消息中引用的确实是 anHTMLDocument
但也确实缺少dispatchEvent
. 不确定这是怎么发生的,因为它是标准的 DOM 方法?