【问题标题】:Passing variables with executeScript [duplicate]使用 executeScript 传递变量 [重复]
【发布时间】:2016-04-29 07:04:55
【问题描述】:
var stuff = "Heeeey";   
chrome.extension.getBackgroundPage().chrome.tabs.executeScript(null, {
    file: 'sendMessage.js'
});;

如何将变量stuff 传递给文件sendMessage.js

【问题讨论】:

    标签: javascript google-chrome-extension


    【解决方案1】:

    无法将变量传递到执行的脚本中。这样做我猜是出于安全和性能原因,因为这可能会导致内存泄漏。

    您可以做的是传递变量的

    有两种方式:

    1. 将消息发送到您的脚本,请参阅the messaging for communication between extension and pages
    2. 使用相同的executeScript 将变量值注入页面脚本,但将脚本作为字符串而不是文件名传递。您可以进行executeScript 调用:一个用于值注入,另一个用于文件注入。

    【讨论】:

    • 不确定我是否让它工作。我正在尝试关注#1。 chrome.runtime.onMessage.addListener(function(message) { if (message.type == "pickLine") { pickLineText = message.content; } }); 在我的 sendMessage.js 中,无论如何,pickLine 似乎总是空白
    • @ILovephp123 这是一条异步消息,也许你在页面注册监听器之前发送?此外,您需要添加所有必需的权限,上次我尝试做类似的事情时,我花了很长时间才让它工作,但他们在 chrome 中是如何做到的并不是那么明显......
    • sendMessage 是在执行 shell 之上还是之下?
    • 我认为只要两个操作都是异步的就没有区别。我认为您可能需要在页面上等待几毫秒才能获得价值,这很丑陋。很可能第二个选项更适合简单地设置值
    • 我觉得你提供的第二个选项要容易得多,我只是不太明白你在说什么哈哈。对不起=/
    猜你喜欢
    • 2018-06-17
    • 2011-03-13
    • 2013-03-22
    • 2017-03-27
    • 2014-01-11
    • 2012-09-18
    • 1970-01-01
    • 1970-01-01
    • 2020-07-14
    相关资源
    最近更新 更多