Javascript 无法设置属性';innerHTML';Chrome扩展中的null值
我正在尝试为Chrome做一个新的扩展,它将解析当前选项卡的HTML代码并处理它 这就是我目前所得到的 manifest.jsonJavascript 无法设置属性';innerHTML';Chrome扩展中的null值,javascript,google-chrome,google-chrome-extension,Javascript,Google Chrome,Google Chrome Extension,我正在尝试为Chrome做一个新的扩展,它将解析当前选项卡的HTML代码并处理它 这就是我目前所得到的 manifest.json { "name": "some name", "manifest_version": 2, "version": "0.2", "description": "does something", "browser_action": { "default_icon": "logo.png", "de
{
"name": "some name",
"manifest_version": 2,
"version": "0.2",
"description": "does something",
"browser_action": {
"default_icon": "logo.png",
"default_popup": "popup.html"
},
"icons": {
"128": "icon_128x128.png",
"16": "icon_16x16.png",
"48": "icon_48x48.png"
},
"background": {
"scripts": ["info.js", "mainme.js"]
},
"permissions": [
"tabs", "http://*/*", "https://*/*"
]}
info.js
function init() {
var button = document.getElementById("clickhere");
if(button.addEventListener){
button.addEventListener("click", function() {
//function here
chrome.tabs.executeScript(null,{file: "mainme.js"});
//function end
}, false);
} else if(button.attachEvent){
button.attachEvent("onclick", function() { alert("alert");});
}
};
if(window.addEventListener){
window.addEventListener("load", init, false);
} else if(window.attachEvent){
window.attachEvent("onload", init);
} else{
document.addEventListener("load", init, false);
}
mainme.js
var maintest = document.getElementsByTagName('html')[0].innerHTML;
var mtest = maintest.search("<body");
document.getElementById("divy").innerHTML=mtest;
然后我有一些关于mainme.js的问题,我应该如何把代码放进去?我在想下面的事情
chrome.runtime.sendMessage({code:var maintest = document.getElementsByTagName('html')[0].innerHTML;var mtest = maintest.search("<body");}, function(response) {
window.document.getElementById("divy").innerHTML=mtest;
});
chrome.runtime.sendMessage({code:var maintest=document.getElementsByTagName('html')[0].innerHTML;var mtest=maintest.search(尝试替换
document.getElementById("divy").innerHTML=mtest;
与
由于Chrome扩展只在Chrome中运行,因此可以保证方法addEventListener
已定义,而attachEvent
未定义。因此不需要进行测试
据我所知,您正试图从当前打开的选项卡中提取内容,并将其显示在弹出窗口中。在不为您编写全部代码的情况下,以下是我的建议:
- 将
mainme.js
脚本插入要提取数据的所有页面。您可以从manifest.json
文件中执行此操作,有关详细信息,请参阅
- 使用消息传递机制将数据从内容脚本传递到后台页面,然后再传递到弹出页面,有关详细信息,请参阅
背景页是扩展的基石。基本上,您的扩展应该如下所示:
网页背景页弹出页
感谢您的快速回答。我这样做了,但我得到了相同的错误:(我更新了我原来的帖子。你能再看一看吗?如果你不为chrome.tabs.executeScript
提供一个选项卡ID,它默认为当前窗口的活动选项卡,所以至少那部分没有错:)的确:)我从答案中删除了那部分。谢谢你指出它。
chrome.runtime.sendMessage({code:var maintest = document.getElementsByTagName('html')[0].innerHTML;var mtest = maintest.search("<body");}, function(response) {
window.document.getElementById("divy").innerHTML=mtest;
});
document.getElementById("divy").innerHTML=mtest;
window.document.getElementById("divy").innerHTML=mtest;