是否可以阻止扩展executeScript?运行简单警报的问题

时间:2019-05-13 18:43:47

标签: google-chrome-extension firefox-addon

我正在开发适用于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是另一个无法使用的示例。

0 个答案:

没有答案