无法使用 Chrome 扩展程序弹出窗口中的按钮打开新标签页
Unable to open a new tab using a button within a Chrome Extension popup
我正在尝试编写一个Chrome扩展弹出窗口,其中包含一些选项:根据所选选项,我必须生成一个URL并将其加载到新选项卡中。我已经尝试了几乎所有我找到的解决方案,但我仍然无法理解我做错了什么。我在下面提供了详细信息。
manifest.json
{
"name": "New Extension",
"version": "1",
"description": "New Extension",
"manifest_version": 2,
"browser_action": {
"name": "New Extension",
"default_popup": "popup.html",
"default_icon": "icon.png"
},
"permissions": [ "tabs" , "<all_urls>"]
}
弹出窗口.html
<html>
<head>
<link rel="stylesheet" href="style.css" type="text/css" />
<script src="popup.js"></script>
</head>
<body style="width: 400px" bgcolor= "#FFFFFF">
Operation:<input type="radio" name="operation" id="Google" checked="checked">Google
<input type="radio" name="operation" id="Yahoo">Yahoo<br/>
<input type="button" name="btngenerate" id="btngenerate" value="Generate" />
</body>
</html>
弹出窗口.js
document.getElementById("btngenerate").addEventListener('click', function() {
alert("in generate URL");
var URL = "http://google.com";
if (document.getElementById("yahoo").checked == true)
URL = "http://yahoo.com";
chrome.tabs.create({url: URL});
});
当我尝试执行此操作时,我能够看到弹出窗口,但是,当我单击"生成"时,没有任何反应。我的代码有什么问题?
Chrome 开始逐个标记解析您的 HTML 文件标记并填充 DOM。
一旦遇到<script>
标签,它就会被执行。
因此,您的代码在 DOM 中存在#btngenerate
之前执行。
您需要将其包装在一个事件中,该事件将在文件完全读取并构造 DOM 后触发:
document.addEventListener("DOMContentLoaded", function() {
document.getElementById("btngenerate").addEventListener(/*...*/);
});
相关文章:
- 在新标签上打开链接,IE7-8和safari所有版本都无法使用
- 广告拦截处于活动状态,然后不要打开超链接到新标签
- 在新标签页打开时触发 Chrome 扩展程序
- 使用父标签中的样式属性附加新标签
- 如何测试在Chrome扩展中使用Jasmine打开新标签
- 两个表添加新行按钮-冲突
- 创建包含预定结构的新标签
- 添加<pre>TinyMce 4中的标签按钮
- JavaScript禁用”;打开”"打开新标签”;以及“;复制“;长按iOS 8 safari中的锚标签
- 火狐插件不会打开带有url的新标签
- Chrome扩展程序修改新标签页正文
- 在 SharePoint 2010 上创建“添加新项目”按钮
- 谷歌浏览器移动模拟器:如何强制它在模拟器中也打开新标签
- window.open 会打开一个新标签页,而不是一个新窗口(在 chrome 中)
- 当我单击添加新列按钮时,表单会自动提交
- 无法使用 Chrome 扩展程序弹出窗口中的按钮打开新标签页
- Symfony - 嵌入表单中的食谱“添加新标签”不起作用
- 如何刷新 qtip 标签以在悬停时显示特定按钮的新标签
- 如何制作一个 chrome 扩展程序,以打开带有多个按钮的弹出菜单,这些按钮可在新标签页中打开链接
- Chrome 扩展程序:通过单击按钮创建新标签页