我对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);
如果我禁用其他插件,错误消息会消失。这让我得出结论,这是prototype和jQuery之间的冲突(其他插件使用了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之间可能存在一些潜在的冲突,可以使用jQuery的noConflicts
方法来解决。我已经尝试从各个地方调用它,但效果不佳。我认为这不是问题的原因,因为a)noConflict
函数仅涉及$
变量,而这似乎不是问题所在,b)我希望WordPress可以为我处理好这些问题......
最后,使用Venkman调试器,我确定错误消息中引用的element
确实是一个HTMLDocument
,但也确实缺少dispatchEvent
。不确定如何发生这种情况,因为它是标准的DOM方法?