【问题标题】:Chrome Extension: Issue with passing a parameter [duplicate]Chrome扩展程序:传递参数的问题[重复]
【发布时间】:2015-12-14 23:24:55
【问题描述】:

这是有效的:

function click(e) {
    chrome.tabs.executeScript(null, {
        code: 'var money = 1;'
    }, function() {
        chrome.tabs.executeScript(null, {file: 'peace.js'});
    });
}

这不是(为方便起见,编辑了代码):

function click(e) {

    var test = 'test';
    chrome.tabs.executeScript(null, {
        code: 'var money = ' + test + ';'
    }, function() {
        chrome.tabs.executeScript(null, {file: 'peace.js'});
    });
}

如何正确传递? 谢谢!

【问题讨论】:

  • 您看到的错误是什么?
  • 它说未定义,@jianweichuah
  • 您是否尝试过查看e 是什么?在函数中添加console.log(e),看看是什么。
  • 是的,当我 console.log 它时,它显示正确。只是没有传递给peace.js
  • 我认为这只是将js代码注入页面,而不是将其传递给peace.jsdeveloper.chrome.com/extensions/tabs#method-executeScriptvar money = 1; 是如何工作的?

标签: google-chrome-extension


【解决方案1】:

我认为您的问题是字符串值的格式不正确。例如,

function click(e) {
    var test = 'test';
    chrome.tabs.executeScript(null, {
        code: 'var money = ' + test + ';'
    }, function() {
        chrome.tabs.executeScript(null, {file: 'peace.js'});
    });
}

不起作用,因为在执行 var money=test; 时,脚本不知道 test 是什么。

如果你想传递一个字符串,它应该是

function click(e) {

    var test = 'test';
    chrome.tabs.executeScript(null, {
        code: 'var money = "' + test + '";'
    }, function() {
        chrome.tabs.executeScript(null, {file: 'peace.js'});
    });
}

这样,执行的代码将是var money="test";

【讨论】:

  • 可移植的方式是进行 JSON 编码。查看副本。
【解决方案2】:

找到解决方法:

if (e.target.id == 'test1') {
    chrome.tabs.executeScript(null, {
        code: 'var money = 1'
    }, function() {
        chrome.tabs.executeScript(null, {file: 'peace.js'});
    });
} else  if (e.target.id == 'test2') {
    chrome.tabs.executeScript(null, {
        code: 'var money = 2'
    }, function() {
        chrome.tabs.executeScript(null, {file: 'test.js'});
    });
}

【讨论】:

    猜你喜欢
    • 2012-09-28
    • 1970-01-01
    • 1970-01-01
    • 2012-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-11
    • 1970-01-01
    相关资源
    最近更新 更多