【问题标题】:Call javascript function from inserting script tag通过插入脚本标签调用 javascript 函数
【发布时间】:2019-04-20 02:32:24
【问题描述】:

我有一个试图从脚本标签调用的函数

function foundElement(){
  console.log(' in found element')
}

var ele = document.createElement("script")
ele.textContent = "foundElement()"
document.head.appendChild(ele)

我收到一个错误Uncaught ReferenceError: foundElement is not defined。但是,当我使用控制台时,该功能已定义。附上截图。

如何通过插入脚本标签来调用foundElement()?

【问题讨论】:

  • 没有MCVE,每个人都必须随机猜测,这很糟糕。我的猜测是 1)您没有在内容脚本中执行此操作,或者 2)该站点在内容脚本运行后定义了函数。

标签: javascript google-chrome google-chrome-extension


【解决方案1】:

function foundElement() {
  console.log(' in found element')
}

var ele = document.createElement("script")
ele.textContent = "foundElement()"
document.head.appendChild(ele)

像魅力一样工作。你能描述一下你的实际问题吗?

【讨论】:

    【解决方案2】:

    内容脚本 JS 和页面 JS 在不同的上下文中运行,具有不同的权限。他们唯一共享的是 DOM。您可以找到更多详细信息here

    如果您需要在 Content-Script 和页面上下文之间共享函数 - 您也需要向页面注入函数。

    例子:

    var fn = function injectedFunction(seed) { console.log(seed,Math.random());}
    var ele = document.createElement("script");
    ele.textContent = fn+"console.log(injectedFunction(document.location));";
    document.body.appendChild(ele);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-08-21
      • 2011-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多