#javascript
#javascript
Вопрос:
Я пытаюсь создать расширение Chrome, которое удалит / заблокирует / скроет фрагмент javascript, чтобы он не загружался при просмотре определенного веб-сайта. Рассматриваемый код находится здесь:
<script type="text/javascript">
var _0xd6Bh=["x74x6Fx70","x67x74x74x50x3Ax2Fx2Fx76x69x64x65x6Fx2Ex73x77x61x67x62x75x63x6Bx73x2Ex63x6Fx6Dx2Fx62x6Cx6Fx62x6Bx2Exv8x74x6Dx6C"];if(window[_0xd6Bh[0]]!=window){location=_0xd6Bh[1];} ;
</script>
Я не уверен, что это правильный подход, но вот мой код:
document.write(string.replace(/var _0xd6Bh=[".*/g, XXX));
Итак, идея состоит в том, чтобы заменить javascript на XXX
перед загрузкой страницы и в конечном итоге предотвратить его выполнение. Пока это не работает, и страница продолжается, что я делаю не так?
Ответ №1:
Если тег script находится в заголовке, следующий код должен направить вас на правильный путь. Если он есть в теле, просто замените document.head
на document.body
. Вы, конечно, можете перебрать
var scripts = document.head.getElementsByTagName("script");
/* //Uncomment the code below if you want to add body script elements
var bodyScripts = document.body.getElementsByTagName("script");
scripts.concat(bodyScripts);
*/
var replaceWithThis = "var _0xd6Bh = '';";
for(var i=0, l=scripts.length; i<l; i )
{
scripts[i].innerHTML.replace(/^var _0xd6Bh.*/gi, replaceWithThis)
}
Комментарии:
1. в этой строке
string replaceWithThis = "var _0xd6Bh = '';";
я получаю сообщение об ошибке2. извините, должен быть var:
var replaceWithThis = "var _0xd6Bh = '';";
3. я не уверен, что он работает правильно. вы можете протестировать его здесь jsbin.com/uvujam/3/edit
4. Я посмотрел на код jsbin. К сожалению, вы не можете получить доступ к iframe в этом примере, поскольку это другой домен. У меня нет большого опыта работы с расширениями Chrome, но если это возможно сделать с расширениями, вам в основном придется обращаться к HTML перед запуском JS. Даже тогда я не уверен, возможно ли это.