重定向到网址使用Google Chrome扩展程序

时间:2014-06-26 15:25:30

标签: google-chrome google-chrome-extension

我是 Google Chrome扩展程序的新手。我在扩展程序中创建了一个按钮。使用该按钮,我想将用户重定向到另一个站点(例如" www.example.com")。 我有以下为重定向编写的代码,但它不起作用。

Related question

的manifest.json

{
    "name": "Popup ",
    "manifest_version": 2,
    "version": "0.1",
    "description": "Run process on page activated by click in extension popup",
    "browser_action": {
    "default_icon": "icon.png",
        "default_popup": "popup.html"
    },

    "permissions": [
        "tabs", "http://*/*", "https://*/*"
    ]
}

popup.html

<html>
    <head>
        <script src="popup.js"></script>
        <style type="text/css" media="screen">
            body { min-width:250px; text-align: center; }
            #click-me { font-size: 15px; }
        </style>
    </head>
    <body>
        <button id='click-me'>Click Me!</button>
    </body>
</html>

background.js

chrome.extension.onRequest.addListener(function(request, sender) {
    chrome.tabs.update(sender.tab.id, {url: request.redirect});
});

popup.js

function clickHandler(e) {

    chrome.extension.sendRequest({redirect: "https://www.google.co.in"});
    alert("url");

    this.close();
}

document.addEventListener('DOMContentLoaded', function () {
    document.getElementById('click-me').addEventListener('click', clickHandler);
})

你知道它为什么不起作用吗?

1 个答案:

答案 0 :(得分:7)

如果您使用background pages,那么您需要在清单文件中声明后台脚本(在您的情况下为background.js):

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

您的示例不起作用,因为sender.tab仅在请求来自制表符或内容脚本时定义,而不是来自弹出窗口。

在您的示例中,根本不需要背景页面,您可以直接从弹出页面使用chrome.tabs API:

function clickHandler(e) {
    chrome.tabs.update({url: "https://example.com"});
    window.close(); // Note: window.close(), not this.close()
}
document.addEventListener('DOMContentLoaded', function() {
    document.getElementById('click-me').addEventListener('click', clickHandler);
});