我是创建扩展程序的新手,我正试图让它们变得更加舒适。基本上,我试图创建一个简单的扩展来执行以下操作:
我不确定如何使用扩展程序点击新窗口中的按钮。我怎么处理这个?这就是我现在所拥有的:
popup.html
<html>
<body>
<input type="button" id="the_button" value="My button"></input>
</body>
<script src="popup.js"></script>
</html>
popup.js
document.getElementById("the_button").addEventListener("click", function() {
var win = window.open("http://www.roblox.com", "roblox", 400, 400)
//Now what can I do to externally click buttons?
})
manifest.json
{
"manifest_version": 2,
"name": "Test",
"description": "Test Extension",
"version": "1.0",
"icons": {
"48": "icon.png"
},
"permissions": [
"http://*/*",
"https://*/*"
],
"content_scripts": [{
"matches": ["http://*/*", "http://*/*"],
"js": ["jquery.js", "popup.js"]
}],
"browser_action": {
"default_title": "This is a test",
"default_icon": "icon.png",
"default_popup": "popup.html"
}
}
答案 0 :(得分:1)
首先,您使用</input>
结束标记时出错: <input>
标记不需要关闭!所以更改您的{{1进入这个:
popup.html
现在,回到真正的问题:
您需要创建一个新选项卡,然后将内容脚本注入页面。 以下是一个快速解决方案:
将<html>
<body>
<input type="button" id="the_button" value="My button">
</body>
<script src="popup.js"></script>
</html>
权限添加到tabs
:
manifest.json
从清单中删除...
"permissions": [
"*://*/*", // this will match both http and https :)
"tabs"
],
...
内容脚本,这没用!你不需要它。
popup.js
警告:当我说删除时,我的意思是从您的...
"content_scripts": [{ // remove!
"matches": ["http://*/*", "http://*/*"], // remove!
"js": ["jquery.js", "popup.js"] // remove!
}], // remove!
...
中删除该行,请勿使用评论(manifest.json
)并执行操作不要将我的代码复制并粘贴到您的代码上,只需删除这四行。
现在,在您的//
中,当您打开标签页时,可以在页面中注入内容脚本,如下所示:
popup.js
这将创建一个新选项卡,并在其中注入脚本document.getElementById("the_button").addEventListener("click", function() {
chrome.tabs.open({url:"http://www.roblox.com", active:"true"}, function(tab) {
chrome.tabs.executeScript(tab.id, {file:"click_the_button.js", run_at: "document_end"});
// here is where you inject the content script ^^
}
});
,您将使用该脚本单击页面内的按钮(加载时),其代码为:
click_the_button.js
注意:如果你想在你的var thing = $("a#roblox-confirm-btn");
thing.click();
脚本中使用jQuery,你可以在它之前的标签中注入它:
click_the_button.js
您可能会觉得有用的资源:
答案 1 :(得分:-1)
您需要制表符权限。 我之前遇到过同样的问题。 答案在这里: