将变量值发送到其他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);
    }
    ...
}