FlashとJavascript。 Webアプリケーションに関する考察。

最近、プロジェクトの開発で、私のチームは、あるページから別のページに切り替えたときにコンポーネントの1つが再起動しないインターネットアプリケーションを実装するタスクに直面しました。 完全なFlashアプリケーションを作成するか、iframeまたはオブジェクトメソッドを使用して実装を使用するかの2つのオプションがありました。 プロジェクトをポータブルデバイスに移植するための技術的な要件により、Flashは削除されたため、JavaScriptとオブジェクトはそのまま残りました。 その結果、私たちはスキームに落ち着きました:

コンテナとそれに囲まれた2つのオブジェクト。 予備テスト、構造は合格し、実装を開始しました







第1章AJAXとブラウザベースのナビゲーション。



ブラウザー開発者は、サイトが長い間HTMLページのセットでなくなっており、ますますアプリケーションのように見えていることを認識していませんでしたが、私たち(Web開発者)は、コンテンツの部分的な更新で前後のボタンを正しく機能させるという難しいタスクに直面しました。

実際に更新されたページ(コンテンツ)がコンテナーに埋め込まれ、コンテンツページが完全に更新されても、アドレスバーは変更されないため、タスクはさらに複雑になります。 そして、これにより、ユーザーはサイト内のコンテンツへの直接リンクを取得する機会を通常の方法で奪います。 通常の方法では、アドレスバーからアドレスをコピーします。

問題のリストが概説されたとき、私たちは解決策を探し始めました。 そして、それはwindow.location.hashで見つかりました。 1つのサイトで、JSメソッドを使用して何らかの方法で変更されたことを覚えていましたが、これを重要視していませんでした。 その後、自分のプロジェクトで検索を行ったときに、ハッシュで、通常はドメイン /の後に続くリンクの一部だけを記述できることに気付きました。 それがまさに私たちがしたことです。

現在のアドレスバーで問題を解決すると、別のアドレスバーが表示されます。 アドレスバーで変更されたのはハッシュだけだったため、進む-戻るボタンが機能しなくなりました。 つまり、実際には履歴の遷移が発生しましたが、URLが変更されていないことをブラウザーが確認してもコンテンツページが過負荷になりませんでした。 タイマーを切る必要がありました。タイマーは0.5秒に1回アドレスバーを変更のためにポーリングし、これが発生するとコンテンツをオーバーロードしました。 シャーマニズムとJSカンフーにより、すべての一般的なブラウザでパフォーマンスが達成されました。



第2章IEは再び天から地へと下降します。



ナビゲーションの問題を解決する過程で、XHTMLが有効なレイアウトに別れを告げました。 非推奨のiframeの代わりに使用したオブジェクトタグは、親ウィンドウへのアクセスを完全に拒否したためです。 シャーマニズムに多くの時間を費やして、バリデーターに別れを告げ、iframeを挿入しました。 さらに、IEは透明なPNGのトピックに光とスニークを与え、Flashを挿入し、そのメソッドをJSにエクスポートしました。 しかし、これらは多くの人に知られており、インターネットで広く取り上げられている小さなものなので、私はそれらに注意を向けません。



ところで、SWFObjectは検証に合格しません。



第3章そして、これがFlashです



最初は、Flashの使用を拒否できませんでした。 その場合、オーディオプレーヤーとマルチスレッドブートローダーはありません。 しかし、Flashで視覚要素を作成する代わりに、インターフェイスなしで薄型モジュールを作成し、各リビングスペースを1x1ピクセルのサイズで割り当てました。 それらをホームレスにすると、抗議でメソッドをJSにエクスポートするのをやめます。 すべてのモジュールをコンテナに入れることにしました。これにより、バックグラウンドでの読み込みが可能になりました。 つまり、ファイルをダウンロードに置いてダウンロードページを離れ、そこに戻ると、ファイルは引き続きダウンロードされます。 (このモードは、その安定性が不明なため、公式リリースにはまだ含まれていません。)さらに、薄いモジュールを作成することにより、JS <-> Flashジョイントの数を最小限に抑え、システム全体のフォールトトレランスを向上させました。 しかし、ここでSafariは決定的なNOを言いました。 事実は、何らかの未知の理由で、JSがエクスポートされたメソッドが異なるフレームにある場合、そのメソッドに対してFlashをプルできないことです。 幸いなことに、休日の後、生産目的でMacBookがオフィスに表示され、このブラウザを克服します。



第4章今日、私は多くのことを理解しました。



最初に判明したことは、完璧なブラウザがなく、道路上で最高速度で運転し始めると全員が「壊れる」ことです。 特にIEのPNG、Operityを喜ばせたので、Opacityを変更すると、ブロックのすべての内部要素に頑固に適用されます。そのため、解散効果が低下し始めます。 これは特にアニメーションに当てはまります。



結論の代わりに。



気配りのある読者が私に尋ねます:「見出しはコンテンツと何の関係があるのですか?」

今は休暇であり、考える時間があります。 だから私は座っているし、Flashでサイトを作るのは簡単ではないと思う。 HTML + JSが提供するすべての魅力にもかかわらず。



All Articles