我正在使用此处描述的方法1
Insert code into the page context using a content script
基于
Google Chrome "Application Shortcut": How to auto-load JavaScript?
这工作正常,但是在我的浏览器(Chrome)更新到v71之后,此操作不再起作用,因为我的元素再也无法在注入的JS文件中找到函数。我准备了一个简单的例子:
manifest.json
{
"manifest_version": 2,
"name": "Test",
"version": "1.0.0",
"web_accessible_resources":
[
"Callbacks.js"
],
"content_scripts": [
{
"matches": ["https://stackoverflow.com/"],
"js": ["inject.js"],
"run_at": "document_idle"
}
],
"permissions": [
"activeTab"
]
}
inject.js
function newButton(id, cb)
{
var b = document.createElement("div");
b.setAttribute("onclick",cb);
b.style.margin = "50px"
b.style.width = "100px";
b.style.height = "100px";
b.style.background = "gray";
b.style.zIndex = 10000000;
b.style.position = "absolute";
b.id = id;
return b;
}
var cc= document.createElement("script");
cc.src = chrome.runtime.getURL('Callbacks.js') ;
document.body.appendChild(cc);
document.body.appendChild(newButton("myId", "myfun();"));
Callbacks.js
function myfun(){
window.alert("hallo");
}
当进入stackoverflow.com并单击灰色div时,我会在控制台中看到这一点
(索引):1未捕获的ReferenceError:未定义myfun 在HTMLDivElement.onclick((index:1) onclick @((索引):1
但是,我仍然可以直接从控制台调用myfun。
对此有何想法?在较旧的Chrome版本中,此功能仍然有效。
答案 0 :(得分:-1)
按@wOxxOm所述进行了重组,现在可以正常工作。