Я не разработчик JS, поэтому простите за любой ужасный код, который я мог бы написать
Привет всем,
Я работаю над этим проектом расширения Chrome, и у меня действительно странная ошибка. Расширение предназначено для просмотра веб-страницы и замены определенных слов. Кажется, он отлично работает на всех сайтах, которые я пробовал, кроме Википедии. В википедии заменяются только слова в первом абзаце страницы, а затем появляется ошибка Uncaught TypeError: Cannot read property 'innerHTML' of null
.
Content.js
var nodes = [];
var wordMap = {'color':'colour'}
var regex = new RegExp(Object.keys(wordMap).join("|"),"gi");
if( document.readyState !== 'loading' ) {
console.log( 'document is already ready, just execute code here' );
myInitCode();
} else {
document.addEventListener('DOMContentLoaded', function () {
console.log( 'document was not ready, place code here' );
myInitCode();
});
}
function myInitCode() {
var walker = document.createTreeWalker(
document.body,
NodeFilter.SHOW_TEXT,
function(node) {
var matches = node.textContent.match(regex);
if(matches) {
return NodeFilter.FILTER_ACCEPT;
} else {
return NodeFilter.FILTER_SKIP;
}
},
false);
while(walker.nextNode()) {
nodes.push(walker.currentNode);
}
for(var i = 0; node=nodes[i] ; i++) {
node.parentNode.innerHTML = node.parentNode.innerHTML.replace(regex, function(match) {
return wordMap[match];
});
}
}
Раздел сценария содержимого Manifest.json
"content_scripts": [
{
"matches": [
"*://*/*"
],
"js": [
"content.js"
],
"run_at": "document_end"
}
]
Вот снимок экрана с ошибкой:
А вот скриншот ошибки:
Я пытался искать ответы, и думал, что ошибка происходит, потому что DOM еще не загружен, поэтому я добавил код для решения этой проблемы, но ошибка все еще происходит.
Есть идеи, почему это может происходить?
Спасибо!