Javascript如何在没有源文件的情况下动态创建脚本标记?

时间:2017-01-06 09:25:06

标签: javascript html

我的debug.html页面得到了这个:

window.onload = function() {
    var dataFromLink = parseData(location.search.substring(5));
    callScript(dataFromLink);
};

</script>

我的debugBoot.js得到了这个:

function parseData(dataFromLink){
    dataFromLink=dataFromLink.replace(/%20/g, ' ');
    dataFromLink=dataFromLink.replace(/%22/g, '"');
    dataFromLink=dataFromLink.replace(/%27/g, '\'');
    dataFromLink=dataFromLink.replace(/%3C/g, '<');
    dataFromLink=dataFromLink.replace(/%3E/g, '>');
    return dataFromLink;
}

function callScript(param1) {
    var script = document.createElement("script");
    script.type = "text/javascript";
    script.innerHTML = param1;
    script.id = "debugScript";
    script.src = "debugScript.js";
    document.getElementsByTagName("head")[0].appendChild(script);
    return false;
}

当我加载页面时,来自location.search.substring(5)的数据看起来像这样,但我在parseData函数中删除了工作人员:

function execute(doSave) { 
    dss.login(userId);
    return true;
}

所以,我有一个Web应用程序,我有一个文件夹WEBContent,还有我的文件debugScript.js

我的代码从那里读取文件,其中包含以下行:

script.src = "debugScript.js";

这有效,但我有问题......

我用来访问具有此代码的页面的链接还会触发一个函数,该函数将dataFromLink保存到文件中,从而调用数据。这很好,但有一个问题。总是当函数保存数据时,我需要刷新eclpise文件以便我的脚本可以读取它,如果我不刷新文件,它只是它的旧版本。

我尝试将其保存到本地磁盘,但后来我从浏览器中收到错误

Not allowed to load local resource: file://...

长话短说,我需要以某种方式创建一个脚本而不读取任何文件,但是要在页面中插入一个空脚本,然后将dataFromLink中的内容写入它......

有可能吗?

或者可能在某个地方创建一个临时文件,但不能在服务器上创建我可以阅读的文件?

我会接受任何解决方案:)

1 个答案:

答案 0 :(得分:0)

忘了回答:)

好吧,我遇到的问题无法按照我想要的方式解决。

我最后做的是,我使用了第一页的来源,textarea所在的位置,并创建了一个javascript文件,我将其名称作为参数发送到第二页,然后可以找到该文件在文件系统中打开它:

<script id=loadScript>
    window.onload = function() {    
        callScript(fileName, userId);   
    };
</script>


function callScript(fileName, userId) {
    var script = document.createElement("script");
    script.type = "text/plain";
    script.id = "debugScript";
    script.src = ".../getSource/" + userId + "/" + fileName;
    document.getElementsByTagName("head")[0].appendChild(script);
}