2017-01-31 2 views
0

Я использую следующий javascript внутри расширения Chrome Web Override, чтобы попытаться заменить определенный текст на всех страницах Facebook, но он не работает.Chrome addon для замены строки на Facebook не работает?

document.addEventListener('DOMContentLoaded', function() { 
    document.body.innerHTML = document.body.innerHTML.replace('Friend Name', 'Silly Nickname'); 
}, false); 

setTimeout(function(){ 
document.body.innerHTML = document.body.innerHTML.replace('Friend Name', 'Silly Nickname'); 
}, 3000); 

Если я вручную запустить replace функции в консоли после загрузки страницы он делает то, что я ожидал. Почему он не работает автоматически? Единственная ошибка консоли, которую я получаю, выглядит следующим образом, но я не думаю, что это связано с этим плагином/кодом, потому что это не должно быть загрузка jquery.

Отказался загрузить сценарий «https://code.jquery.com/jquery-3.1.1.min.js», потому что он нарушает следующие директивы Content Security Policy

К сожалению, я не могу быть уверен, потому что источник VM1771:7.

Если это is вещь JQuery, есть ли что-нибудь, что я могу сделать? Если нет, что не так с кодом?

ответ

2

String.prototype.replace ожидает, что в качестве первого аргумента будет строка или регулярное выражение, а в случае строки она заменяет только первое вхождение. Это явление может быть в некоторых метаданных, имя класса и т.д.

Если вы хотите, чтобы все случаи должны быть заменены, вы должны использовать регулярное выражение вариант:

document.body.innerHTML = document.body.innerHTML.replace(/Friend Name/g, 'Silly Nickname'); 

Флаг g здесь означает «глобальный», т.е. примените это ко всем вхождениям. Вы также можете использовать gi для нечувствительности к регистру.

+0

Это была проблема. Благодаря! –

+0

Нет проблем. Возможно, вам захочется выяснить, стоит ли вместо этого заменить innerHTML (сценарии не запускаются снова, проигрыватели событий теряются и т. Д.). Может быть, это не проблема, но похоже, что там могут быть проблемы –

+0

Да, это определенно ломает некоторые вещи. Но это просто кляп, поэтому я не беспокоюсь об этом. Еще раз спасибо. –

Смежные вопросы