google-chrome - 使用 Google chrome 扩展程序重定向到 url

标签 google-chrome google-chrome-extension

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

Related question .

list .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);
})

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

最佳答案

如果您使用 background pages ,那么您需要在 list 文件中声明后台脚本(在您的情况下为 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);
});

关于google-chrome - 使用 Google chrome 扩展程序重定向到 url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24434470/

相关文章:

css - Chrome 更新版本 24.0.1312.52 m 弄乱了字间距

php - 火狐/Chrome/LAMP : UTF-8 - invalid characters

jQuery Safari/Chrome 与可拖动包含属性不兼容

asynchronous - 如何在继续执行之前等待异步 chrome.storage.local.get() 完成

javascript - 在扩展程序中阅读 Chrome 浏览历史记录

javascript - 默认情况下以编程方式固定 chrome 扩展图标

css - Chrome拒绝在某些页面上打印纵向模式

html - 如何使特定网站与其他浏览器兼容?

macos - 在 Mac Chrome 上使用 Selenium

google-chrome-extension - 在 Chrome 打包应用程序中使用 Google Analytics?