私たちはあなたがページをブラウズしている間(サウンドクラウドのようなもの)、再生し続けるべきオーディオプレーヤーを備えたDrupalサイトを構築しています。ajaxではなくiframeを使用する必要がありますか?
現在、読み込んでいます<a>
のサイトをajaxでクリックし、htmlをページに挿入し、history.jsを使用して場所を操作します。
主要な欠点ががあります:
新しくロードされたページがそれに異なるCSSやJSを持っているかもしれないので、私たちはAJAXの応答テキスト(醜い正規表現)に現在のスクリプト、スタイルとリンク要素を比較する必要があります新しい要素、まだ存在しない要素を追加するだけです。そうすることによって、別のページをロードすることは、実行されたスクリプトを削除/削除/元に戻すことはありません。これはパフォーマンス上の問題になります(マークアップに対する正規表現はとにかくです)。インラインフレームを使用して
はこれと他の問題を解決することがあります。あなたが最初のサイト上のリンクをクリックすると
、ページのコンテンツは、単にページをロードするのiframeに置き換えられています。オーディオプレーヤーは元のDOMにあります。 e。 iframeの外側にあります。 iframe内のリンクをクリックすると、ヒストリAPI内でキャッチして使用することができます。
だから私は思ったことはありませんでした:私はiframeを使用する方が良い選択肢かもしれないと思います。
PS:私の主な問題は、ウェブサイトのさまざまなページには異なるスクリプトがあり、スタイルは実際には問題ではないということです。 1つの巨大な静的なjsとcssのWebサイト全体があった場合、私は問題を抱えていませんでした。
更新
iframeソリューションは、iOS以外では、正常に動作します。 iframeは地獄のようにバギーです。それでも、iframeソリューションを利用していると思います。
以前に読み込まれたCSSのすべてをクリーンアップする "reset.css"ファイルを作成することもできますが、各ページがどのようにCSSの方法で適用されるのかを正確に知る必要があります制御できない'link'を使ってロードされた場合はcssをアンロードすることもできますが、CSSをロードする方法にもよりますが、ここを見てください:http://stackoverflow.com/questions/1598899/unload-css-from-webpage –
CSSは問題ありません。スタイルやリンク要素を削除すると、CSSは取り消されます。新しいものを追加すると、スタイルが更新されます。スクリプトは異なる動作をします – Alex
なぜ異なるcss/jsファイルが必要ですか?それらを連結/縮小して1回配信できませんか? このように、ページを変更すると、異なる状態(イベントのバインド、アンバインドなど)を正しく処理するだけで済みます。 –