OperaMiniとJavascript

最近、JavaScript、特にAJAXを操作するOperaMiniの機能についての会話がありました。 このトピックは興味深いです。私の観察のいくつかは誰かに役立つと思います。

OperaMiniの4番目のバージョンは、現時点で最新のものと見なします。



さらに、この記事ではOpera開発者サイトの情報を使用しました







だから、OperaMini、組み込みウォーカーの品質が不十分である携帯電話用のブラウザバージョン。 主な機能は、ページを直接ダウンロードして解析するのではなく、このためにOperaの中間サーバーを使用することです。リクエストされたページはやや短いOBML形式(Opera Binary Markup Language)で最適化され、90%に達することができます!



OperaMiniは膨大な数のMIDP 2およびMIDP 1ワイヤレスデバイスでも動作するため、コンピューティングリソースの制限は非常に大きく、デバイスにJavaScriptエンジンを直接実装する意味はありません。端末としては、JavaScriptに対して同様の、より複雑なアプローチが使用されます。



原則として、OperaMiniがメインOperaに組み込まれているものと同様のJavaScriptエンジンを使用することは論理的です。 ただし、主な違いは、もちろん、サーバー上ですべてが可能ですが、いくつかの制限があることです。



ページが完了する前に行う必要のあるすべての処理(onLoadスクリプトなど)は、ページが発行される前にサーバーで実行されます。これは、連続して呼び出される関数の実行時間の論理的な制限も意味します(たとえば、 setInterval()setTimeout() およびdelay()単に実行が禁止されています)。 そしてもちろん、ページがクライアントに送信されるとすぐに、すべてのスクリプトが停止します。





例1

ページにテキストを表示します

ハローハブラー



< html >

< head >

< title > OperaMini 4.2 </ title >

</ head >

< body onload ='document.getElementById("onLoadChangeMe").innerHTML="AFTER"' >



Hello Habr

< div id ='onLoadChangeMe' > BEFORE </ div >



</ body >

</ html >




* This source code was highlighted with Source Code Highlighter .








クライアント側にはどのような機会が残っていますか?

次のようなフォームイベントに関連するスクリプト





OnClickイベントは、フォームだけでなく、他のすべてのページ要素でも使用できます。

さて、通常のアラート(「HI」)は再起動なしで機能します。





例2:

ボタンを押すと、ページがリロードされ、BEFOREがCLICKEDに置き換えられます。



< html >

< head >

< title > OperaMini 4.2 </ title >



</ head >

< body onload ='document.getElementById("onLoadChangeMe").innerHTML="AFTER"' >



Hello Habr

< div id ='onLoadChangeMe' > BEFORE </ div >



< input

type ='button'

value ='Action test' onclick ='document.getElementById("onLoadChangeMe").innerHTML="CLICKED"'

/>



</ body >

</ html >




* This source code was highlighted with Source Code Highlighter .










例3

選択したアイテムを変更すると、ページがリロードされ、アラート()が表示されます。



< hr />

< select id ='tstSel' onchange ='alert(this.selectedIndex)' >

< option value ='Uno' > Uno </ option >

< option value ='Duo' > Duo </ option >

< option value ='Tres' > Tres </ option >

</ select >




* This source code was highlighted with Source Code Highlighter .








onMouseOver / -Out / -Down / -Up、onKeyDown / -KeyPressonBlur、onFocusなどの他のイベントは無視されます。



AJAXについて

上記の制限を考慮すると、AJAXが通常どおり動作できないことは明らかです。 しかし、良い知らせがあります。XMLHttpRequestがサポートされています! したがって、いくつかの制限はありますが、AJAXを積極的に使用している多くのサイトが機能します。

犠牲にならなければならなかった主なことは、新しいデータを求めてサーバーを絶えずポーリングする機能でした。たとえば、リアルタイムチャットを行うことはできず、GMailでは新しい文字の通知は自動的に表示されません。

ユーザーのアクション、マウスでのクリック、入力フィールドの変更に対する応答として実行されるスクリプトは、ページのリロードが機能しますが、AJAXを使用する重要性を大幅に減らしますが、少なくとも意図したとおりに機能します。



All Articles