Javascript 在popup.html中单击后执行脚本(chrome扩展名)
当我点击Javascript 在popup.html中单击后执行脚本(chrome扩展名),javascript,jquery,google-chrome,google-chrome-extension,Javascript,Jquery,Google Chrome,Google Chrome Extension,当我点击popup.html中的按钮时,我正试图在页面上执行javascript。我试着用这样一种方式: 在background.js中: chrome.tabs.onUpdated.addListener(function(tabId, changeInfo){ if(changeInfo.status == "loading") { insert(tabId); } }); function insert(tabId) { chrome.tabs.ge
popup.html
中的按钮时,我正试图在页面上执行javascript。我试着用这样一种方式:
在background.js中:
chrome.tabs.onUpdated.addListener(function(tabId, changeInfo){
if(changeInfo.status == "loading") {
insert(tabId);
}
});
function insert(tabId) {
chrome.tabs.get(tabId, function(tab) {
$('button').click(function() {
chrome.tabs.executeScript(tab.id, {file: 'js/alert.js'});
});
});
}
Alert.js只包含一个字符串:Alert('works')代码>
警报只是一个例子。真正的脚本应该在用户单击im popup.html按钮后使用打开的选项卡执行一些DOM操作。我为您的需要编写了一个演示
alert.js
alert('hello ' + document.location.href);
background.js
// empty file, but needed
icon.png
manifest.json
{
"manifest_version": 2,
"name": "Click to execute",
"description": "Execute script after click in popup.html (chrome extension) http://stackoverflow.com/questions/20764517/execute-script-after-click-in-popup-html-chrome-extension.",
"version": "1.0",
"icons": {
"48": "icon.png"
},
"permissions": [
"tabs", "<all_urls>"
],
"browser_action": {
"default_icon": "icon.png",
"default_popup": "popup.html"
},
"background": {
"scripts": ["background.js"],
"persistent": false
}
}
您还可以使用消息传递:
在popup.js中
document.getElementById("clicked-btn").addEventListener("click", function(e) {
chrome.runtime.sendMessage({'myPopupIsOpen': true});
});
chrome.runtime.onMessage.addListener(function(message, sender) {
if(!message.myPopupIsOpen) return;
// Do your stuff
});
在background.js中
document.getElementById("clicked-btn").addEventListener("click", function(e) {
chrome.runtime.sendMessage({'myPopupIsOpen': true});
});
chrome.runtime.onMessage.addListener(function(message, sender) {
if(!message.myPopupIsOpen) return;
// Do your stuff
});
未测试,但应能正常工作。有关的进一步信息。您似乎弄乱了一些概念(如弹出窗口、背景页等)。发布您的清单也会有所帮助。提供的background.js
不符合您的要求,似乎没有用。在内容脚本中,将警报放入函数中,例如“handleButtonClick”。确保内容脚本已在清单中注册。然后在popup.html中调用函数:chrome.tabs.executeScript({code:'handleButtonClick()')
。我对你的努力投了赞成票,但是你为什么添加了空的background.js?请原谅,background.js不是必需的。@Vladglubev没有这样的api,但是你可以使用纯javascriptdocument.createElement('tag_name')插入html代码>或jQuery。这很容易。虽然这在理论上可以回答这个问题,但在这里包含答案的基本部分,并提供链接供参考。将要点的内容复制到这个答案中是很简单的。但是,您没有在gist中说明代码的许可条款。因此,不清楚是否允许我这样做。这个脚本将在哪里执行?在popup.html上?或者是活动网页(比如contentscript)?这是一种更好的方法,而不是像@greatghoul的回答那样运行原始脚本。理论上,这可能更好,但不起作用。