Вопрос

У меня есть какой -то код для Firefox, который работает, чтобы проверить, существует ли элемент на странице с определенным обработчиком событий, в данном случае Onclick. С тех пор, как вышел FF4, я получаю ns_error_not_avialable, и я предполагаю, что это связано с xpcnativewrapper вокруг элементов. Вот код, который я использую:


var elem = null;
var elems = doc.getElementsByTagName('td');
var firefoxWindow = window;
for (a = 0; a < elems.length; a++) {
    if (((elems[a] != null && elems[a].hasAttributes() == true && elems[a].getAttribute('onclick') != null && elems[a].getAttribute('onclick').toString().match(/Goodbye Wonderful/gim) != null && elems[a].getAttribute('onclick').toString().match(/Goodbye Wonderful/gim).length >= 0) || (elems[a] != null && elems[a].onclick != null && elems[a].onclick.toString().match(/Goodbye Wonderful/gim) != null && elems[a].onclick.toString().match(/Goodbye Wonderful/gim).length >= 0))) elem = elems[a];
}
var found = false;
var window = null;
for (var i = 0; i < firefoxWindow.frames.length; i++) {
    if (firefoxWindow.frames[i].toString().toLowerCase().indexOf('object window') > -1) {
        window = firefoxWindow.frames[i];
        break;
    }
}

function recursivesearch (Rames) {for (var i = 0; i <frames.length; i ++) {var elems = Frames [i] .document.getElementsBytagName ('td'); for (a = 0; a <elems.length; a ++) {if (((elems [a]! = null && elems [a] .hasattributes () == true && elems [a] .getattriute ('onclick') ! = null && elems [a] .getAttribute ('onclick'). toString (). Match (/Goodbye Wonderful/Gim)! = NULL && elems [a] .getAttribute ('onclick'). toString (). /Прощай, чудесно/gim) .length> = 0) || (elems [a]! = Null && elems [a] .onclick! = Null && elems [a] .onclick.toString (). Матч (/Прощай, замечательно/ gim)! = null && elems [a] .onclick.toString (). Match (/Goodbye Wonderful/Gim) .length> = 0))) elem = elems [a]; } if (elem) {sucd = true; возвращаться; } else {if (frames [i] .frames.length> 0) {recursivesearch (Frames [i] .frames); }}}} if (! elem && window.frames.length> 0) {recursivesearch (window.frames); } if (elem! = null) {print ('## result ##' + elem.tagname); } else {print ('Faile');

Я прошу прощения за длинную линию посередине, но это хорошо, чтобы убедиться, что нет нулевых ссылок. Я не смог найти ничего об изменениях, внесенных в события, так как это отлично работает в FF 3.6. Я обнаружил, что назначение событий отличается, но нет упоминания о чтении свойств событий.

Это было полезно?

Решение

Оказывается, контекст, в котором работал JavaScript, был неверным и работал на FirefoxWindow (поэтому он не мог получить доступ к обработчикам событий) вместо того, чтобы работать на документе окна.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top