【问题标题】:How to allow inline js code execution (onclick) from content script in chrome extension?如何允许从 chrome 扩展中的内容脚本执行内联 js 代码(onclick)?
【发布时间】:2019-01-07 16:03:06
【问题描述】:

answer 建议在 manifest.json 的 content_script_policy 下添加 source code 的 shaw-256 base 64 编码字符串。我应该准确编码什么?完整的 content.js 或仅 myfunction() 在下面的 sn-p 或其他什么?

我的 content.js 是这样的

myfunction(var1,var2){
  //do some thing here
}

var module = `<a href=${url} onclick="myfunction(var1,var2)">Lorem ipsum is a dummy text.Lorem ipsum is a dummy texxt.Lorem ipsum is a dummy texxt.</a>`

somedom.append(module)

【问题讨论】:

  • 不使用 HTML,只需使用 document.createElement 构造 a 元素,然后分配 a.onclick = myfunction。它将正确引用您的内容脚本的功能。
  • 既然你把这段代码称为content.js,想必这是一个内容脚本。 它们不受清单中的content_security_policy 的约束。

标签: javascript google-chrome-extension


【解决方案1】:

内联代码执行是不可能的,但你可以使用这个添加动态元素

injectBtn() {
const link = document.createElement("button");
link.innerHTML = "BTN";
link.className = "btn1";

link.addEventListener("click", () => {
  this.injectTemplate();
});

return document.querySelector("#ipd-leftnav").appendChild(link);
 }
}

希望有帮助

【讨论】:

  • 根据文档 (developer.chrome.com/extensions/…),如果您提供源代码的 base64 编码哈希,则可以内联执行 javascript。就我而言,我对这里的源代码感到困惑。
  • Bharath gedela,这样做没有意义,因为该属性将指向页面功能,而不是内容脚本(Chrome 71 除外,它有问题,但这是另一回事)。
猜你喜欢
  • 2013-03-09
  • 2013-05-20
  • 2014-10-26
  • 2018-12-03
  • 1970-01-01
  • 1970-01-01
  • 2015-12-24
  • 2012-04-12
  • 1970-01-01
相关资源
最近更新 更多