如何动态上传和运行javascript文件?

如何动态上传和运行javascript文件?,javascript,html,Javascript,Html,我正在尝试动态上传并运行一个javascript文件 以下是我的HTML代码: <!DOCTYPE html> <html> <head> </head> <body> <input type="file" id="myFile"> <script> function fileUploaded() { var my

我正在尝试动态上传并运行一个javascript文件

以下是我的HTML代码:

<!DOCTYPE html>
<html>

<head>
</head>

<body>
    <input type="file" id="myFile">
    <script>
        function fileUploaded() {
            var myUploadedFile = document.getElementById("myFile").files[0];
            var script = document.createElement('script');
            script.type = "text/javascript";
            script.src = myUploadedFile.name;
            console.log("running the script: " + myUploadedFile.name);
            document.body.appendChild(script);
        }
        document.getElementById("myFile").addEventListener("change", fileUploaded, false);
    </script>
</body>

</html>
但是当我上传
test.js
文件时,我在控制台中只收到以下消息:

running the script: test.js
这就是我希望得到的:

running the script: test.js
Hello World!
我如何才能得到预期的结果?


函数importPortfolioFunction(){
var file=document.getElementById(“fileForUpload”).files[0];
如果(文件){
var fileName=file.name;
var reader=new FileReader();
reader.readAsText(文件“UTF-8”);
reader.onload=函数(evt){
日志(evt.target.result);
var scriptElement=document.createElement(“脚本”);//创建一个元素
scriptElement.innerHTML=evt.target.result;//插入脚本
document.body.appendChild(scriptElement);//追加/运行脚本
}
reader.onerror=函数(evt){
log(“读取文件时出错”);
}
}
}
document.getElementById(“fileForUpload”).addEventListener(“change”,importPortfolioFunction,false);

此代码非常有效,请自己尝试。我得到了文件的内容,然后将其作为“UTF-8”文本读取,然后将其作为脚本元素的innerHTML。之后,我将script元素添加到文档
。然后文档运行脚本

函数fileupload(){
var myUploadedFile=document.getElementById(“myFile”).files[0];
var script=document.createElement('script');
var reader=new FileReader();
reader.readAsText(myUploadedFile,“UTF-8”);
reader.onload=函数(evt){
script.innerHTML=evt.target.result;
};
script.type=“text/javascript”;
log(“运行脚本:+myUploadedFile.name”);
document.body.appendChild(脚本);
};
document.getElementById(“myFile”).addEventListener(“更改”,文件上载,错误)

上传完文件后,你能检查一下页面,看看插入的位置吗?事实上,对我来说,它也在打印“Hello world”,就像你一样expect@Tushar是的,脚本正在插入body元素中。@真的吗?真奇怪。为什么它在我的Chrome浏览器中不起作用?@ZackLee,它对我也不起作用。奇怪的是它对圣诞老人有用。
running the script: test.js
Hello World!