Ошибка JavaScript в JSSH в Firefox 4.0b1 - PullRequest
0 голосов
/ 27 июля 2010

Использование этого javascript через jssh, скомпилированного и скомпилированного для нового Firefox 4.0 beta 1, возвращает странное сообщение.Вот код (извините, если он немного запутан). В заключение, код проверяет все фреймы окна Firefox, которое является тестовой страницей наших модульных тестов, для элемента, который имеет щелчок мыши, содержащий фразу Goodbye Wonderful, вместо того, чтобы получитьНеудачный ответ назад мы получаем этот странный nserror в конце, который мы не можем объяснить.

var firefoxWindow = getWindows()[0];
var browser = firefoxWindow.getBrowser();
var doc = browser.contentDocument;


var elem = null;
var elems = doc.getElementsByTagName('td');

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(/doNothing/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(frames){ 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].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]; } } if(elem){found = true; return;} else{ if(frames[i].frames.length>0){recursiveSearch(frames[i].frames);}}}}if(!elem && window.frames.length > 0){ recursiveSearch(window.frames); }var origColor = '';if(elem !== null){origColor = elem.style.backgroundColor;if(origColor === null){origColor = '';} elem.style.backgroundColor = 'yellow';}

Вот ответное сообщение от jssh:

Получено: необработанное исключение: [Exception ...«Компонент недоступен» nsresult: «0x80040111 (NS_ERROR_NOT_AVAILABLE)» расположение: «JS frame :: interactive :: :: line 1» данные: нет]

1 Ответ

0 голосов
/ 21 января 2011

JSSh больше не поддерживается в Firefox 4 и представляет собой беспорядок, переключаясь на mozrepl, поскольку он написан в основном на javascript, и добавление моих собственных команд javascript непосредственно в расширение кажется лучшим способом выполнения определенных задач.

...