Я очень мало знаю о 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);
Ошибка исчезнет, если я отключу некоторые другие плагины, и это (плюс googling) привело меня к выводу, что это конфликт между прототипом и 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?