我正在尝试编写一个带有一个名为' btn3'的按钮的chrome扩展程序。当我点击chrome扩展程序(popup.html)中的该按钮时,它会点击网页上的按钮。网页上的按钮具有以下ID:"常规 - 辅助按钮发送消息"
2个问题:
谢谢!
Chrome扩展程序窗口中按钮的脚本
document.addEventListener('DOMContentLoaded', function (){
document.getElementById('btn3').addEventListener('click', sendInMail)
});
sendInMail = function(){
chrome.tabs.executeScript(tabs[0], {file: "content_script.js"});
}
content_scripts.js
alert("content_script is working!");
function clickSendInMailButton() {
var SendInMailButton = document.getElementsByClassName("regular-secondary-button send-message"),
SendInMailButton.click();
}
clickSendInMailButton();
的manifest.json
{
"manifest_version": 2,
"name": "LinkedIn Assistant",
"description": "This extension makes a LSS AE successful.",
"version": "1.0",
"browser_action": {
"default_icon": "icon.png",
"default_popup": "popup.html"
},
"content_scripts": [
{
"matches": ["http://*/*", "https://*/*"],
"js": ["content_script.js"]
}
],
"chrome_url_overrides" : {
"newtab": "newtab.html"
},
"background": {
"scripts": ["bg.js"]
},
"permissions": [
"tabs", "<all_urls>"
]
}
答案 0 :(得分:7)
&#34;标签的错误未定义&#34;
tabs [0] - 你需要找到它。您的脚本在popup.html的上下文中执行。我希望popup.html包含
<head>
...
<script src="popup.js"></script>
</head>
和
Chrome扩展程序窗口中按钮的脚本
来自popup.js。而且你永远不会尝试在popup.html中运行代码。
因此,在这种情况下,没有人知道tabs[0]
。您需要询问chrome哪个窗口以及哪个选项卡现在处于活动状态。它可以像ShwetaM写的那样,或者像from samples
chrome.windows.getCurrent(function (currentWindow) {
chrome.tabs.query({ active: true, windowId: currentWindow.id }, function (activeTabs) {
activeTabs.map(function (tab) {
chrome.tabs.executeScript(tab.id, { file: 'content_script.js', allFrames: false });
});
});
});
或者您可以在没有tab.id,
chrome.tabs.executeScript({ file: 'content_script.js', allFrames: false });
因为在这种情况下脚本将在the active tab of the current window
中运行在Manifest.json中指定时,在创建选项卡every refresh时将执行"content_scripts":
脚本。我不确定,但可能在加载DOM之前。但是,您不应在Manifest.json中指定"content_scripts":
,因为this content script's code will be always injected
此外,您必须确保活动选项卡包含您要查找的按钮。对某些对象使用console.dir
,尤其是函数中的参数;某些文字console.log
; debugger
用于快乐调试。
答案 1 :(得分:3)
你可以删除参数&#34; tabs [0]&#34;
整数(可选)tabId
要运行脚本的选项卡的ID;默认为当前窗口的活动选项卡。
https://developer.chrome.com/extensions/tabs#method-executeScript
答案 2 :(得分:0)
试试这个:
sendInMail = function(){
chrome.tabs.query({
active: true,
currentWindow: true
}, function(tabs) {
chrome.tabs.executeScript(tabs[0], {file: "content_script.js"});
});
}