将变量值发送到其他javascript文件
我试图将一个名为将变量值发送到其他javascript文件,javascript,google-chrome-extension,Javascript,Google Chrome Extension,我试图将一个名为popup.js的文件中的变量发送到另一个名为content.js的文件中 我尝试使用localStorage,但是content.js文件将其接收为null(我确信popup.js文件将其声明为字符串,因为我将其类型从弹出窗口输出到控制台)。现在,我使用chrome.runtime将变量发送到content.js,但我现在尝试的是没有给我任何东西,甚至没有任何错误 这是我的popup.js: $(function(){ $('#submit').click(function
popup.js
的文件中的变量发送到另一个名为content.js
的文件中
我尝试使用localStorage
,但是content.js
文件将其接收为null(我确信popup.js
文件将其声明为字符串,因为我将其类型从弹出窗口输出到控制台)。现在,我使用chrome.runtime
将变量发送到content.js
,但我现在尝试的是没有给我任何东西,甚至没有任何错误
这是我的popup.js
:
$(function(){
$('#submit').click(function(){
var amount = $('#repitions').val();
if (amount){
var x = JSON.stringify(amount);
chrome.runtime.sendMessage({y: x});
}
});
});
这是content.js
文件中接收消息的部分:
chrome.runtime.onMessage.addListener(function(request){
z = request;
alert(z);
});
我有什么地方做错了?。感谢您阅读我的问题。就范围而言,JavaScript中没有“文件”的概念。整个javascript代码,无论是在一个文件中实现还是在同一环境中运行200个文件。有很多方法可以模拟名称空间或类似概念,但我认为这不是你的情况 我认为您可以简单地在内容脚本文件中实现一个方法,并从
popup.js
代码调用它,传递变量
例如:
- popup.js
- content.js
它说内容(在弹出窗口中)没有定义。答案完全错误,因为扩展名不同:这些文件在完全不同的进程中运行。内容脚本在网页中运行,而弹出窗口是一个带有chrome扩展名://URL的单独页面。有关正确的解决方案,请参阅链接的重复主题。是的@wOxxOm您是对的。我完全没有注意到她/他在谈论chrome扩展。是我的错。
...
$(function(){
$('#submit').click(function(){
var amount = $('#repitions').val();
if (amount){
Content.processAmount(amount);
}
});
});
...
var Content = {
processAmount: function(amount){
//do something here
console.log(amount);
}
...
}