chrome 扩展程序弹出相同的选项卡仍然无法正常工作
chrome extension popup same tab still not working
我使用了在这里找到的代码。
但是仍然无法在当前活动选项卡的 popup.html 中打开我的 link。
popup.html
<!doctype html>
<html>
<style>
body {
min-width: 156px;
max-width: 100%;
position: relative;
vertical-align:middle;
}
div {
margin:1px 1px 1px 1px;
}
</style>
<head>
<title>I-Serv Switcher</title>
<script src="js.js"></script>
</head>
<body>
<script src="js.js"></script>
<a href="http://www.google.com"><div style="width:50px; height:50px; background-color:blue; float:left;">Click.</div></a>
</body>
</html>
如您所见,有一点蓝色 div。当我添加 target="_blank" 时,然后 google 在新选项卡中打开。但是添加以下 .js 应该使用 href 从单击的 div 中取出 link 并在活动选项卡中打开它。
js.js
var hrefs = document.getElementsByTagName("a");
function openLink() {
var href = this.href;
chrome.tabs.query({active: true, currentWindow: true}, function(tabs) {
var tab = tabs[0];
chrome.tabs.update(tab.id, {url: href});
});
}
for (var i=0,a; a=hrefs[i]; ++i) {
hrefs[i].addEventListener('click', openLink);
}
权限 "tabs" 在 manifest.json
中给出
我做错了什么?
我是不是忘记了什么?
您的代码在读取 <script>
标签时执行。
DOM的其余部分尚未构建;因此,document.getElementsByTagName("a")
是空的。
要解决此问题,您需要将代码包装在 DOMContentLoaded
事件中:
document.addEventListener("DOMContentLoaded", function() {
var hrefs = document.getElementsByTagName("a");
/* ... */
});
请注意,您可以通过右键单击扩展程序的按钮并选择 "Inspect popup"
轻松调试弹出窗口
我使用了在这里找到的代码。 但是仍然无法在当前活动选项卡的 popup.html 中打开我的 link。
popup.html
<!doctype html>
<html>
<style>
body {
min-width: 156px;
max-width: 100%;
position: relative;
vertical-align:middle;
}
div {
margin:1px 1px 1px 1px;
}
</style>
<head>
<title>I-Serv Switcher</title>
<script src="js.js"></script>
</head>
<body>
<script src="js.js"></script>
<a href="http://www.google.com"><div style="width:50px; height:50px; background-color:blue; float:left;">Click.</div></a>
</body>
</html>
如您所见,有一点蓝色 div。当我添加 target="_blank" 时,然后 google 在新选项卡中打开。但是添加以下 .js 应该使用 href 从单击的 div 中取出 link 并在活动选项卡中打开它。
js.js
var hrefs = document.getElementsByTagName("a");
function openLink() {
var href = this.href;
chrome.tabs.query({active: true, currentWindow: true}, function(tabs) {
var tab = tabs[0];
chrome.tabs.update(tab.id, {url: href});
});
}
for (var i=0,a; a=hrefs[i]; ++i) {
hrefs[i].addEventListener('click', openLink);
}
权限 "tabs" 在 manifest.json
中给出我做错了什么? 我是不是忘记了什么?
您的代码在读取 <script>
标签时执行。
DOM的其余部分尚未构建;因此,document.getElementsByTagName("a")
是空的。
要解决此问题,您需要将代码包装在 DOMContentLoaded
事件中:
document.addEventListener("DOMContentLoaded", function() {
var hrefs = document.getElementsByTagName("a");
/* ... */
});
请注意,您可以通过右键单击扩展程序的按钮并选择 "Inspect popup"
轻松调试弹出窗口