有哪些可能的跨浏览器(至少是Firefox和Chrome)方法动态重新加载由本地加载的html文件引用的本地Javascript文件?
背景:
正在使用本地html页面来呈现由两个引用的Javascript文件格式化和显示的一些数据。一个文件包含Javascript代码,另一个文件包含JSON数据。
这个JSON数据在另一个程序的磁盘上更新,如果没有手动重新加载页面(或打开新页面),UI会自动合并这些更新会很不错。
在Firefox中,我认为可以使用AJAX加载html来解决问题,但在Chrome中由于相同的原始策略失败而无法正常工作(遗憾的是,我不一定依赖于--disable-web-security来缓解这是因为必须关闭Chrome的所有先前实例才能使其工作)。
我看到的唯一解决方案是运行本地Web服务器,但我希望更简单,更少侵入性(可能在IFrame中加载Javascript并重新加载IFrame,尽管我认为浏览器安全会阻止这种情况)
有人有任何建议吗?
答案 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中不起作用。