Расширение Firefox не может переопределить события элемента - PullRequest
2 голосов
/ 27 сентября 2011

У меня проблемы с попыткой переопределить событие onsubmit элемента формы.У меня нет проблем с добавлением прослушивателя с addEventListener, но в моем конкретном случае мне нужно заменить onsubmit, но по какой-то причине, когда я это делаю, выдается эта ошибка:

Error: Component is not available = NS_ERROR_NOT_AVAILABLE

Мой код просто такой:

gBrowser.contentDocument.getElementById("theform").onsubmit = function() {
   return false;
};

По сути, я хочу запретить отправку формы, но этот код дает сбой и выдает вышеуказанную ошибку.Использование addEventListener для возврата false не мешает отправке формы.

Спасибо.

1 Ответ

1 голос
/ 27 сентября 2011

По соображениям безопасности объект, возвращаемый getElementById в расширении, является XPCNativeWrapper вокруг элемента DOM; это не сам элемент. Это приводит к некоторым важным ограничениям. Подробнее здесь:

Присвоение или чтение свойства on * в XPCNativeWrapper узла DOM или объекта Window вызовет исключение. (Вместо этого используйте addEventListener и используйте «event.preventDefault ();» в своем обработчике, если раньше вы использовали «return false;».)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...