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