动态重新加载本地Javascript源/ json数据

时间:2012-08-22 18:56:12

标签: javascript html

有哪些可能的跨浏览器(至少是Firefox和Chrome)方法动态重新加载由本地加载的html文件引用的本地Javascript文件?

背景:

正在使用本地html页面来呈现由两个引用的Javascript文件格式化和显示的一些数据。一个文件包含Javascript代码,另一个文件包含JSON数据。

这个JSON数据在另一个程序的磁盘上更新,如果没有手动重新加载页面(或打开新页面),UI会自动合并这些更新会很不错。

在Firefox中,我认为可以使用AJAX加载html来解决问题,但在Chrome中由于相同的原始策略失败而无法正常工作(遗憾的是,我不一定依赖于--disable-web-security来缓解这是因为必须关闭Chrome的所有先前实例才能使其工作)。

我看到的唯一解决方案是运行本地Web服务器,但我希望更简单,更少侵入性(可能在IFrame中加载Javascript并重新加载IFrame,尽管我认为浏览器安全会阻止这种情况)

有人有任何建议吗?

2 个答案:

答案 0 :(得分:2)

如果您的应用启动了Chrome,那么您可以在启动命令中添加 - allow-file-access-from-files 标志。

答案 1 :(得分:2)

我使用以下代码重新加载JavaScript和JSON文件。

/* Load a JavaScript or JSON file to use its data */    
function loadJsFile(filename, dataIsLoaded){
    var fileref = document.createElement('script');
    fileref.setAttribute("type","text/javascript");
    fileref.setAttribute("src", filename);
    fileref.onload = dataIsLoaded;

    if (typeof fileref!="undefined"){
        document.getElementsByTagName("head")[0].appendChild(fileref);
    }  
}

/* The callback that is invoked when the file is loaded */
function dataIsLoaded(){
    console.log("Your data is ready to use");
}

当JSON文件与网站位于同一目录时的用法:

var jsonFile= "myData.json";
loadJsFile(jsonFile, dataIsLoaded);

我在IE10和Firefox 22中成功测试过它;但它在Chrome中不起作用。