在新选项卡中显示生成的页面

时间:2013-07-13 20:04:51

标签: javascript google-chrome google-chrome-extension

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

的manifest.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"
    ]
} 

background.html

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

将redirect.html

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

请保持温和,这是我在这里的第一篇文章,在发布之前我研究了很多东西。元刷新是我能想出的唯一可以解决相同的原始危险或公共api,我不能在路由器关闭的情况下使用。所有明显的错误都是由于缺乏经验而不是疏忽造成的。我只是碰到了一堵墙而不再做任何事了。

一切顺利, 变形

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

1 个答案:

答案 0 :(得分: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 page仅包含脚本,则只需使用清单文件中的background.scripts语法即可。然后,您不再需要background.html

manifest.json(部分内容)

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

最后的说明:

  • 我已将"persistent":false添加到您的清单文件中,以将您的背景页面转换为event page。大多数情况下,您的扩展程序无效,因此使用事件页面而不是后台页面可以节省内存。
  • 您可以安全地从清单文件中删除tabs权限。如果您只想打开新标签页,则不需要它。