Почему document.open () не работает тихо в расширении FireFox? - PullRequest
0 голосов
/ 24 сентября 2019

Если у меня есть следующий код в скрипте содержимого (content.js):

document.open();
document.write('test');
document.close();  

с минимальным manifest.json

{
  "name": "__MSG_appName__",
  "version": "1.0.0",
  "description": "__MSG_appDesc__",
  "default_locale": "en",
  "permissions": ["<all_urls>", "tabs", "storage"],
  "content_scripts": [{
    "js": ["content.js"],
  }],
  "manifest_version": 2
}

Браузер не должен отображать ничего, кроме'test' - но это работает только в Chrome.Точно такой же код не работает в FireFox, без ошибок консоли, и если я добавлю console.log() после кода выше, он никогда не сработает.

Если я вставлю точно такой же код в консольв FireFox (или Chrome) он работает, как и ожидалось, но он не работает из скрипта контента.

Я также попытался изменить document на window.top.document и аналогичные, и вывелdocument объект, чтобы убедиться, что я не схожу с ума (и он действителен), поэтому я не уверен, что упускаю что-то очевидное.

Обновление: У меня также естьобнаружил, что если вы запускаете document.write(); в консоли, чтобы получить пустую страницу, а затем перезагружаете плагин в about:debugging, то плагин запускается снова и работает - но только если я запускаю open или write из консолисначала вручную.

1 Ответ

0 голосов
/ 24 сентября 2019

Я понятия не имею, почему это работает, но в случае, если кто-то еще сталкивается с этой специфической проблемой, вызов следующего не работает (происходит молча, и дальнейшее выполнение не выполняется).

document.write('test');

Тогда как этоотлично работает:

window.eval('document.write()');
document.write('test')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...