3

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

背景:

本地 HTML 页面用于呈现由两个引用的 JavaScript 文件格式化和显示的一些数据。一个文件包含 JavaScript 代码,另一个文件包含 JSON 数据。

此 JSON 数据由另一个程序在磁盘上更新,如果 UI 自动合并这些更新而无需手动重新加载页面(或打开新页面),那就太好了。

在 Firefox 中,我相信可以使用 AJAX 加载 HTML 来解决该问题,但在 Chrome 中,由于同源策略失败,这将无法正常工作(不幸的是--disable-web-security,由于必须关闭所有先前的 Chrome 实例,因此我不一定能依靠它来缓解这种情况让它工作)。

我看到的唯一解决方案是运行本地 Web 服务器,但我希望有一些更简单、侵入性更小的东西(也许在 iframe 中加载 JavaScript 并重新加载 iframe,尽管我认为浏览器安全会阻止这种情况)。

有人有什么建议吗?

4

2 回答 2

2

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

于 2012-08-22T19:19:28.243 回答
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 中不起作用。

于 2013-07-19T00:44:29.817 回答