【问题标题】:Inserting code from Contentscript.js (Chrome Extension)从 Contentscript.js(Chrome 扩展)插入代码
【发布时间】:2015-06-05 04:05:41
【问题描述】:

我正在开发 Politics & Information Google Chrome 扩展,但我遇到了一个问题,我试图将 JS 脚本插入网页的 div 之一,结果什么都没有,绝对没有弹出

我知道我有正确的区域,因为如果我使用 += "Hello";它在那里正确显示文本,但是当我实际执行 +="" 时,脚本似乎没有运行。对于所有的开发者,有什么建议吗?

我是怎么做的:

theinfotable.children[0].innerHTML += ''; JavaScript(从 Contentscripts.js 文件插入的 Google Chrome 扩展程序)

我可以看到插入的代码,但脚本似乎仍然没有加载:(而且我知道当我有自己的页面而不是插入时,这段代码可以工作) http://oi61.tinypic.com/2irkx9c.jpg

【问题讨论】:

    标签: javascript php html google-chrome


    【解决方案1】:

    您是否尝试过创建一个新元素并附加它而不是使用 .innerHTML?

    var injectable = document.createElement("script");
    injectable.innerHTML = "console.log('Injected!');" // Your script here
    // or injectable.src = "location" if you'd rather link
    theinfotable.children[0].appendChild(injectable);
    

    我不完全确定为什么会发生这种情况,如果我不得不猜测这是解析事物的方式或安全措施的特殊性,但 appendChild 应该可以解决问题。基本上,据我了解,这两者之间的区别

    innerHTML +=:将 HTML 转换为字符串,并添加到该字符串,并使用新内容重新解析该字符串

    还有……

    appendChild:创建一个 DOM 节点,附加该 DOM 节点,重新计算/刷新文档以重新计算样式。

    在解析的某个地方,您的新脚本信息被忽略了。

    【讨论】:

    • 我试过了,但它似乎仍然不起作用。 var injectable = document.createElement("script"); injectable.injectable = "
    • 我用''代替了"",它不再报错,但广告仍然没有弹出
    • 脚本:
    • 我认为您没有意识到这是如何工作的。 document.createElement("script") 创建一个脚本节点供您使用。您需要做的是:var injectable = document.createElement("script");injectable.src = "http://srvpub.com/adServe/banners?tid=26300_55726_1";theinfotable.children[0].appendChild(injectable); 因为当您对创建的节点进行 .attribute 时,您正在修改您创建的脚本节点的属性 (.innerHTML)。
    • 广告仍然没有出现,我不明白为什么它不起作用(注意我复制并粘贴了您的代码)
    【解决方案2】:

    我发现了问题,页面将我的脚本阻止为“不安全”,右上角有一个小盾牌图标,点击它后,我只需输入“显示不安全脚本”,它就会弹出。

    (如果有人愿意告诉我这样人们就不必这样做了,那就太好了 :D)我宁愿人们只是让它弹出,而不是必须留下来让它弹出

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-12-01
      • 2013-11-15
      • 1970-01-01
      • 2012-07-02
      • 1970-01-01
      • 1970-01-01
      • 2015-09-21
      • 1970-01-01
      相关资源
      最近更新 更多