Можно ли заблокировать расширение executeScript? Проблема с запуском простого оповещения - PullRequest
0 голосов
/ 13 мая 2019

Я разрабатываю расширение для браузера Chrome и Firefox, и некоторые веб-сайты, похоже, каким-то образом могут помешать правильной работе chrome.tabs.executeScript(). Судя по моим исследованиям, это кажется невозможным, но, возможно, кто-то может указать на хитрость, которую могут использовать определенные веб-сайты?

Я разработал упрощенный пример, который воспроизводит ошибку.

manifest.json

{
  "manifest_version": 2,
  "name": "Test",
  "version": "0.0.0",
  "author": "Test",
  "description": "",

  "permissions": [
    "cookies",
    "history",
    "storage",
    "tabs",
    "webNavigation",
    "webRequest",
    "webRequestBlocking",
    "<all_urls>"
  ],

  "browser_action": {
    "default_title": "Test"
  },

  "background": {
    "persistent": true,
    "scripts": ["background.js"]
  }
}

background.js

window.chrome = (function() {
  return window.msBrowser || window.browser || window.chrome;
})();

function doAlert() {
  chrome.tabs.create({
    url: 'https://twitter.com',
    active: true
  }, (tab) => {
    chrome.tabs.executeScript(tab.id, {
      code: 'alert("test")'
    });
  });
}

chrome.browserAction.onClicked.addListener((tab) => {
  doAlert();
});

В общем, я ожидаю, что откроется вкладка и загрузит twitter.com, а затем отобразит предупреждение.

В Chrome, как только загружается вкладка, я получаю сообщение об ошибке "вкладка закрыта" при попытке запустить executeScript. В Firefox он выглядит как предупреждение, которое может произойти до загрузки сайта, но это происходит так быстро, что я не могу точно сказать. В консоль фонового скрипта не было зарегистрировано ошибок.

Большинство других URL работают нормально, выдают предупреждение, как и ожидалось (я подтвердил, что оно работает на этом сайте, в Google, Facebook и т. Д.). LinkedIn - другой пример, где это не работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...