Я очень мало знаю о 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);
Ошибка исчезнет, если я отключу некоторые другие плагины, и это (плюс поиск в Google) привело меня к выводу, что это конфликт между прототипом и jQuery (который используется некоторыми другими плагинами).
Во-вторых, я следую рекомендованной WordPress практике использования wp_enqeue_script
, чтобы добавить зависимость от моего JavaScript к библиотеку прототипов, как показано ниже:
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
. Я пробовал звонить из разных мест, но безуспешно. Я не думаю, что это проблема, потому что а) функция noConflict
относится исключительно к переменной $
, которая здесь не кажется проблемой, и б) я бы ожидал < / em> wordpress, чтобы разобраться в этом для меня, потому что он может ...
Наконец, используя отладчик Venkman, я определил, что element
, указанный в сообщении об ошибке, действительно является HTMLDocument
, но ему также не хватает dispatchEvent
. Не знаете, как это могло произойти, если это стандартный метод DOM?