Очевидно, я делаю что-то глупое.
processTextNodes: function processTextNodes(node) {
node = node || content.document.body; // base node
var children = node.childNodes, i = 0;
while (node = children[i]) {
if (node.nodeType == 3 && node.textContent) { // text node found, replace enclosed text.
if (node.nodeName == "script") continue;
/*node.parentNode.setAttribute("onmouseover", "alert(\"AAA\");");*/
node.parentNode.onmouseover = function(){ alert("AAA") };
node.textContent = aatel.transliterate(node.textContent);
}
if (node.nodeType == 1) {
if (node.title) node.title = aatel.transliterate(node.title);
if (node.alt) node.alt = aatel.transliterate(node.alt);
}
processTextNodes(node);
i++;
}
},
Выше приведен метод из расширения, которое я пишу. При запуске, как указано выше, я получаю следующее в консоли ошибок
Error: uncaught exception: [Exception... "Component is not available" nsresult: "0x80040111 (NS_ERROR_NOT_AVAILABLE)" location: "JS frame :: chrome://aatel/content/overlay.js :: processTextNodes :: line 97" data: no]
В случае возникновения двусмысленности, строка 97:
node.parentNode.onmouseover = function(){ alert("AAA")};
Если я закомментирую строку, присваивающую функцию .onmouseover, и раскомментирую строку setAttribute прямо над ней, она будет работать так, как вы ожидаете. Большое уродливое непрозрачное сообщение об исключении мне мало помогает. Что я делаю неправильно? Javascript не является моей сильной стороной.