通过回调函数将全局Javascript变量传递给其他JS文件

时间:2013-07-10 22:05:47

标签: javascript global-variables total.js

所以我有一个有趣的问题。我在引用其他Javascript文件之前声明了一个全局变量,但该变量似乎没有完成。也许我错过了某个地方的一步?

变量是一个字符串,它是上传文件的内容,如下所示:

function getText(s){ //creates a global variable that can hold the file
        window.text = s;
        console.log(window.text);
  };     
  function handleFileSelect(event) {
    var files = event.target.files; // The file that is uploaded
      var reader = new FileReader();                 
     reader.onloadend = function(event){            
        getText(event.target.result); //pulling out the content of the file
        loadScript('total.js',function(){ //starts app code
            window.text
        });
     };      
    reader.readAsText(files[0],"UTF-8");//required to read the text        
};           
  try{
        document.getElementById('files').addEventListener('change',
         handleFileSelect, false); //listens for the uploaded file
  }    
  catch(e){
        alert(e);
  };

因此,一旦用户上传文件,内容就会被复制到window.text中。记录内容以确保我抓住了正确的东西。然后loadScript允许其余的应用代码开始运行。我需要我的程序等待用户在继续之前指定一个文件,并且我对AngularJS有一些奇怪的怪癖,所以以这种方式运行它是我能想到的唯一解决方法。

loadscript的内容:

function loadScript(url, callback){

var script = document.createElement("script")
script.type = "text/javascript";

script.onload = function(){
    callback();
};

script.src = url;
document.getElementsByTagName("head")[0].appendChild(script);

};

total.js从这行代码开始,最终导致输出:

var csv=window.text;

一切正常。输出看起来应该......保存为空。意思是window.text没有正确地通过。

是否由于回调而导致它没有完全通过?我该如何解决这个问题?

修改 我的回调中的函数根本就没有运行,我已经想通了,所以这不是传递变量的问题。但PHPglue的输入仍然有效。感谢。

1 个答案:

答案 0 :(得分:0)

而不是window.text,只需使用我推荐或不使用var关键字的代码,在您的所有代码上声明您的变量,例如:

var windowText;
function getText(s){
    windowText = s;
    console.log(windowText);
}

在JavaScript变量中,如果它们是在其他代码之上编写的话,它们会自动执行,除非它们专门用于函数内部。只要您不在功能代码中使用var关键字,就可以重复使用windowText