从已在运行的进程中打开chrome扩展的后台页面

时间:2015-03-31 00:49:36

标签: javascript html json google-chrome-extension manifest

我目前正在为我的第一个Chrome扩展程序编写代码,该扩展程序在后台进程中运行youtube.com/tv,因此您可以随时使用手机或桌面访问它,这样可以正常工作但如果您想要查看视频而不是只是听到我必须打开后台进程所在的页面的音频,这就是问题开始的地方,因为打开新页面会创建第二个进程,与第一个进程冲突时会崩溃,所以我需要知道是否有一种方法可以将后台实例打开到一个可查看的选项卡中。 代码如下:

的manifest.json

{
  "manifest_version": 2,

  "name": "Youtube TV",
  "version": "1.0",
  "description": "A simple extension which runs 'www.youtube.com/tv' in the background of your browser do you can connect to it with your phone whenever your computer is turned on.",
  "background": {
    "persistent": true,
    "page": "background.html",
    "script": "background.js"
  },
  "browser_action": {
    "default_icon": "icon.png"
  },
  "permissions": [
    "activeTab",
    "https://ajax.googleapis.com/",
    "webRequest",
    "webRequestBlocking",
    "<all_urls>",
    "tabs"
  ]
}

background.html

<html>
  <head>
    <style type="text/css">
    </style>
  </head>
  <body style="margin:0px">
    <script src="background.js"></script>
    <iframe style="margin:0px; border:0px" src="http://youtube.com/tv" width="100%" height="100%" >
    </iframe>
  </body>
</html>

background.js

chrome.webRequest.onHeadersReceived.addListener(
  function (details) {
    for (var i = 0; i < details.responseHeaders.length; ++i) {
      if (details.responseHeaders[i].name.toLowerCase() == 'x-frame-options') {
        details.responseHeaders.splice(i, 1);
        return {
          responseHeaders: details.responseHeaders
        };
      }
    }
  }, {
    urls: ["<all_urls>"]
  }, ["blocking", "responseHeaders"]);

chrome.browserAction.onClicked.addListener(
  function (activeTab) {
    var newURL = "http://youtube.com/tv";
    chrome.tabs.create({ url: newURL });
});

1 个答案:

答案 0 :(得分:1)

chrome.tabs.create({url: chrome.extension.getURL('background.html')});

EDIT 对不起,我没有正确理解这个问题。请参阅此问题的答案here

  

真实背景页面已隐藏,无法显示