jump to navigation

ブウラザのレンダリングエンジンについて 10月 7, 2009

Posted by hyhy in 技術情報.
Tags: ,
trackback

とあるサイトで今まで表示動いていたものが動かなくなっていたことが判明。
やっていることは、
javascriptでwindow.onloadイベント発生時に、swf生成用のObjectを取得して、
setVariable()メソッドでFlashに変数と値を渡しているのですが、
どうもFireFox3.5のときだけ動かないのです。

setVariable()実行時にFlash側の変数が見つけられないことが原因らしく。

FireFoxのバージョンを3.0や2.0にダウングレードしてみたり、
Flashが絡んでいることからFlashPlayerを10から9にダウングレードしてみたり、
やってみたところ、正常に動くことが確認されました。

対応策として、jsのonload直後のObject取得及び、setVariable()メソッドの実行のタイミングを遅らせることで、正常動作が確認できました。

以上のことより、FireFox3.5+FlashPlayer10の組み合わせによる問題?
FireFox3.5は前バージョンより、HTMLレンダリングのスピードが若干ダウンしている?
と勝手に納得してしまいましたが、

ここで、疑問が。
onload直後のDOM操作について、ブラウザ毎に搭載されているレンダリングエンジンの仕組みについて、調べてみました。

HTMLレンダリングエンジン

HTMLレンダリングエンジンとは、HTMLをはじめとしたウェブページ記述用言語で書かれたデータを実際に画面に表示するための計算をするプログラムです。

[主要ブラウザのレンダリングエンジン]
Trident (Internet Explorer)
Gecko (Firefox, Camino, SeaMonkey他)
WebKit (Safari, Google Chrome,シイラ, OmniWeb他)
Presto (Opera)

あ、SafariもGoogle Chromeも同じレンダリングエンジンを使っているから、Google Chromeでページを閲覧しても、UA(ユーザーエージェント)に「Safari」が含まれるのかな?

ちなみに、よく聞くWebKit(ウェブキット)(個人的にだけど)は
アップルが中心となって開発されているオープンソースのHTMLレンダリングエンジン群の総称です。

先日、GoogleがIEでChromeのレンダリングエンジンを利用可能にするプラグイン「Google Chrome Frame」を公開しました。

Chrome開発者らによるThe Chromium Blogによると、最近のJavaScript実行環境のパフォーマンス向上やHTML5などの最新技術によってWebアプリケーションはデスクトップアプリケーションを置き換えるまでに進化しているが、いっぽうでIEは最新技術をサポートしていないため、開発者はIE向けの対応に追われている、と述べている。Google Chrome Frameを利用することで、IEでもこれらの最新技術を利用できるようになり、Web開発者がIEへの対応に苦しめられることもなくなる、ということらしいです。

ちょい書きかけなので、時間ある時に追記。

広告
%d人のブロガーが「いいね」をつけました。