3

ローカルにロードされた HTML ファイルによって参照されるローカル JavaScript ファイルを動的に再ロードするための可能なクロスブラウザ (少なくとも Firefox と Chrome) の方法は何ですか?

バックグラウンド:

ローカルの HTML ページを使用して、参照されている 2 つの JavaScript ファイルによってフォーマットおよび表示される一部のデータをレンダリングしています。1 つのファイルには JavaScript コードが含まれ、もう 1 つのファイルには JSON データが含まれます。

この JSON データは別のプログラムによってディスク上で更新されます。手動でページをリロードする (または新しいページを開く) ことなく、これらの更新が UI に自動的に組み込まれると便利です。

--disable-web-securityFirefox では、AJAX を使用して HTML をロードすることで問題を解決できると思いますが、Chrome では、同じ生成元ポリシーの失敗により、これは機能しません (残念ながら、Chrome の以前のインスタンスをすべて閉じる必要があるため、これを軽減するために必ずしも頼ることはできません) 。それが機能するため)。

私が見る唯一の解決策は、ローカル Web サーバーを実行することですが、より単純で侵襲性の低い方法を望んでいます (おそらく、JavaScript を iframe にロードして 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 ファイルが Web サイトと同じディレクトリにある場合の使用法:

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

IE10 と Firefox 22 で正常にテストしました。ただし、Chromeでは機能しません。

于 2013-07-19T00:44:29.817 に答える