Jot*_*wal 1 google-chrome google-chrome-extension
我是谷歌Chrome扩展程序的新手.我在扩展程序中创建了一个按钮.使用该按钮,我想将用户重定向到另一个站点(如"www.example.com").我有以下代码,我为重定向编写,但它不起作用.
相关问题.
的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://*/*"
]
}
Run Code Online (Sandbox Code Playgroud)
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>
Run Code Online (Sandbox Code Playgroud)
background.js
chrome.extension.onRequest.addListener(function(request, sender) {
chrome.tabs.update(sender.tab.id, {url: request.redirect});
});
Run Code Online (Sandbox Code Playgroud)
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);
})
Run Code Online (Sandbox Code Playgroud)
你知道为什么它不起作用吗?
如果使用后台页面,则需要在清单文件中声明后台脚本(在您的情况下为background.js):
"background": {
"scripts": [ "background.js" ]
},
Run Code Online (Sandbox Code Playgroud)
您的示例不起作用,因为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);
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5443 次 |
| 最近记录: |