0

我的互联网连接不稳定,想通过 chrome 扩展程序监控路由器日志。由于我刚开始编程,我决定创建一个新的选项卡 browserAction,调用一个 html 页面,该页面仅包含一个指向我的浏览器日志的 HTTP-EQUIV="REFRESH"。这样我就摆脱了相同的原产地政策。自从没有原因或错误日志条目停止工作以来,我可以开始。任何人都可以给我一些关于我如何让这个恢复工作的指示,改进这个,或者告诉我我的方法有多奇怪/错误?:)

清单.json:

{
    "name": "Logview",
    "version": "0.1",
    "manifest_version": 2,
    "description": "Logview Extension",
    "browser_action": {
      "default_icon": "icon.png",
      "default_title": "Logview Extension"
    },
    "background": {
      "page": "background.html"
    },
    "permissions": [
      "tabs"
    ]
} 

背景.html

<html>
    <head>
        <script>
        chrome.browserAction.onClicked.addListener(function(tab) {
            chrome.tabs.create({url: "redirect.html"});
        });
        </script>
    </head>
</html>

重定向.html

<head>
    <meta HTTP-EQUIV="REFRESH" content="0; url=http://user:pass@192.168.1.1/logview.cmd">
</head>

请温柔一点,这是我在这里的第一篇文章,在发布之前我研究了很多东西。元刷新是我唯一能想到的解决相同来源的危险或公共 api 的方法,如果路由器出现故障,我将无法使用它们。所有明显的错误都是由于缺乏经验而不是疏忽造成的。我只是撞到了墙,只是不再做任何事情了。

万事如意,变身

编辑:将标题更改为 ...新标签(是 ...弹出)

4

1 回答 1

0

你被野兽咬了您被名为Content Security Policy。别担心,你不是第一个遇到这种情况的人,我看到这个错误每周都在重复。

在跳到解决方案之前,我想通过提供两个先前的答案来配备解决问题​​的工具:

看完最后一个答案,你应该明白你的代码的问题所在,明白解决方案是这样的:

background.html

<script src="background.js"></script>

background.js

chrome.browserAction.onClicked.addListener(function(tab) {
    chrome.tabs.create({url: "redirect.html"});
});

如果您的背景页面仅包含脚本,只需在清单文件中使用 background.scripts 语法。那么,你就不再需要background.html了。

manifest.json(一部分)

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

最后注意事项:

  • 我已添加"persistent":false到您的清单文件中,以将您的背景页面变成事件页面。大多数时候,您的扩展程序什么都不做,因此使用事件页面而不是背景页面可以节省内存。
  • 您可以安全地tabs从清单文件中删除权限。如果您只想打开一个新选项卡,则不需要它。
于 2013-07-13T21:22:47.710 回答