1

Java ベース (JSF) サーバーの小さな JavaScript シミュレーションを作成しています。ブートストラップ JavaScript ファイルは、AJAX を使用して一連のファイルをダウンロードして解析し、大きな HTML 文字列を生成します。この HTML 文字列は、完全な HTML ドキュメントです。ドキュメントタイプ、ヘッド、スクリプト インクルード、インライン スクリプト、ボディなどがあります。

私が実際の JSF バックエンドを使用したくない理由は、純粋な UI 環境を使用して、Java/Oracle サーバーによる速度低下なしにコードをテストできるようにしたいからです。

自分のコード (.zip ファイルなど) を誰とでも共有したいのですが、マシンにサーバーが既にインストールされていなくても、ブラウザーで (AJAX 呼び出しが行われている間は小さな読み込み画面で) ページを開くことができるはずです。 .

その質問への答えにより、さらに調査するようになりました。別のエラーに遭遇しましたが、説明できないようです。

Fiddle #1 : これは、iframe の document.write を使用して HTML を iframe に入れようとします。この HTML には、新しい履歴状態をプッシュするスクリプトがありますhistory.pushState(null, null, hash)

フィドル#2:これはHTMLをiframeに入れようとしますが、今回は単にlocation.hash = hash

どちらのフィドルも Chrome と Safari と IE 9 では正常に動作するようですが、Firefox では次のエラーが発生します。

NS_ERROR_FAILURE: Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsIDOMHistory.pushState]

私はこのエラーを理解していません - history.pushState(null,null,"#test")FireBug の javascript コンソールを使用して、Firefox の任意のページで同じコードを実行すると問題なく動作しますが、この特定の状況では動作しません。

document.open(); document.write(html); document.close()(iframe を作成する代わりに) 現在のページでドキュメントを実行しようとしましたが、同じ問題が発生しました。これは、Firefox で何もデバッグできなくなったことを意味します。少なくとも iframe アプローチでは、ブレークポイントが機能します。

誰でもこの問題に光を当てることができますか?

このエラーを見つけることにつながる、昨日尋ねた別の関連する質問を次に示します

4

2 に答える 2