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