繁体   English   中英

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

[英]Passing global Javascript variables through callback functions to other JS files

所以我有一个有趣的问题。 我在引用其他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的输入仍然有效。 谢谢。

代替window.text ,只需在所有代码上方声明带有我建议的变量或不带有var关键字的变量即可,例如:

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

在JavaScript中,如果变量在其他代码之上编写,则它们会自动保留下来,除非它们在函数内部明确作用域。 只要您在函数代码中不使用var关键字,就可以重用windowText

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM