javascript - Chrome V71 打破了扩展 JS 注入?
问题描述
我正在使用此处描述的方法 1
这是基于
谷歌浏览器“应用程序快捷方式”:如何自动加载 JavaScript?
这工作正常,但在我的浏览器(Chrome)更新到 v71 后,这不再工作,因为我的元素在我注入的 JS 文件中找不到函数了。我准备了一个简单的例子:
清单.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"
]
}
注入.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();"));
回调.js
function myfun(){
window.alert("hallo");
}
在 stackoverflow.com 上单击灰色 div 时,我在控制台中看到了这个
(index):1 Uncaught ReferenceError: myfun is not defined at HTMLDivElement.onclick ((index):1) onclick @ (index):1
但是,我仍然可以直接从控制台调用 myfun。
有什么想法吗?对于较旧的 Chrome 版本,这仍然有效。
解决方案
如@wOxxOm 所述进行了重组,现在可以正常工作。
推荐阅读
- node.js - NestJS - 基于一个属性有条件地验证身体
- google-colaboratory - Google Colab 会话超时
- bootstrap-4 - 使用引导程序 4.2 创建多列时如何创建空间
- python - 将按钮添加到 Django 管理索引页面
- java - 当类型仅在运行时已知时如何指定泛型类型?
- python-3.x - 收集私人 DM 的反应但忽略机器人反应
- php - 如何加快页面加载大量图像的速度
- python - 有没有一种快速而好的方法来检测正在运行的程序的给定像素的颜色?
- haskell - 为什么会有|b|^|a| 函数a->b中的居民。它是怎么来的?为什么它不仅仅是“一个”居民
- python-3.x - Python 3 http.server - 一个奇怪的 IP 地址试图连接我的服务器