我是chrome扩展开发的新手。试试我的第一个。
我正在尝试编写一个扩展程序,在每个页面加载时执行某个操作。
每次加载页面时都需要发送一个帖子请求。我使用ajax请求来执行此操作。成功发送请求后,我想打开一个弹出/新窗口。
这是我的清单文件
{
"manifest_version": 2,
"name": "Coupons",
"version": "1.0",
"description": "Yay! Coupons",
"icons": { "16": "images/carbs16.png",
"48": "images/carbs48.png",
"128": "images/carbs128.png" },
"browser_action": {
"default_title": "Coupons ! Yay",
"default_icon": "images/carbs48.png",
"default_popup":"start.html"
},
"permissions":
["https://example.com/"],
"content_security_policy": "script-src 'self' https://ajax.googleapis.com; object-src 'self'",
"content_scripts":
[
{
"matches": ["*://*/*"],
"js": ["jquery-2.1.3.min.js","myscript.js"],
"run_at": "document_end"
}
]
}
这是我的myscript.js文件
$.post("https://example.com",
{
product_name: url,
desc:"Yo",
price: "22"
},
function(data){
//alert("yay")
chrome.windows.create({'url':'void.html','type':'popup'},function(window){
})
});
这是我的start.html文件:
<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
<script src="myscript.js"></script>
</head>
<body>
</body>
</html>
我面临的问题如下:
当我在浏览器中点击Chrome扩展程序的图标时,请求会成功发送并创建一个新窗口。
然而,目标是确实在每个页面加载时发生。但在这种情况下,请求在页面加载时发送(这意味着文件执行)。但是,我想要创建的新窗口不会显示。
关于为什么会发生这种情况的任何想法都会非常有用。感谢
答案 0 :(得分:0)
问题是内容脚本中未定义chrome.windows
。如果您在控制台中查看,则在加载新选项卡时应该会看到错误。
它首次运行是因为您从有权访问myscript.js
的浏览器操作弹出窗口运行chrome.windows
。
如果您只想在加载页面时执行此操作,则仅内容脚本就可以完成此任务。您不会需要start.html
,browser_action
对象可以从manifest.json
中移除。
此外,您需要修改内容脚本以使用window.open
而不是chrome.windows
。
添加@abrahams评论:
如果弹出窗口拦截器未被用户操作触发,则 window.open
可能会被阻止。解决方案可能是将消息发布到后台脚本并从那里使用chrome.windows。