Opera 8.60 for Windows Mobile (1682) には失望した。(不具合報告)



私にとっては前の Opera 8.50 for Windows Mobile BETA (1635) のほうが安定していたし、IFRAMEの問題にしても些細な事でしか無かった。


しかし(1682)では、すでに何度もハードリセットを強いられている。しかも電源ボタンが反応しなくなって、仕方なく電源ONの状態のまま裏蓋を開けてリセットボタンを押さなくてはならない事が多い。


しかも、前回はてなアンテナで更新チェックを実行するブックマークレットで指摘したIFRAMEの不具合もあまり改善されていないばかりで無く、「不具合」なのか「仕様変更」なのか判然としない改悪?がなされている。


注意! 「 Opera 8.60 for Windows Mobile (1682) 」で↓この項のブックマークレットを実行するとW-ZERO3が壊れてしまうかもしれません。
たとえ何が起きても自己責任ってことでヨロシクっす。

では、本題の不具合報告を始めます。

1.外部javascriptbookmarkletから呼び出せない。

まず、前回の不具合報告の「追記の追記(20060507)」で記載したブックマークレットを再掲載します。

javascript:(function(){var S=document.createElement('script');S.src='http://borbis.web.fc2.com/hatena/IframeTest.js';document.body.appendChild(S);})();

このブックマークレットは(1682)のOperaでは動きません。パソコン版の普通のブラウザなら当然動きますが。
そこで、問題点を切り分けるために別の単純なブックマークレットを作って見ました。

javascript:(function(){var S=document.createElement('script');S.src='http://borbis.web.fc2.com/hatena/jstest.js';document.body.appendChild(S);})();

ここで、http://borbis.web.fc2.com/hatena/jstest.js の内容は、

alert("jstest.js");

です。つまり呼び出されたらメッセージを表示するだけ単純なもの。
しかし、(1682)のOperaでは動きません。
従って、(1682)のOperaでは、ブックマークレットから外部の.jsファイルを呼び出すことが出来なくなってしまいました。


パソコン版の普通のブラウザ(Opera7.54,Opera8.54,Opera9,Firefox1.x,IE6)なら出来るし、Opera Mobile でも 8.50 までは出来ていたこの機能が何故 8.60 で出来ないのか?


2.IFRAMEの問題点が改善されていない。

1.で再掲載したブックマークレットは外部javascriptを呼び出していたが、1.で指摘したように(1682)のOperaでは外部javascriptが使えないので仕方なく外部ファイルを呼ばないように作り変えたのが↓こちら。

javascript:(function() {var LiteralHtmHead=['<HTML><SCRIPT><!--','var uT = [','"http://www.dozleng.com/updates/skep/index.php?act=calendar&skep=reverse"','];','var uTcnt;','var Timer_ID;','function checkThis(url){','var B=document.body,D=document;','B.appendChild(D.createElement("hr"));','B.appendChild(D.createTextNode(url));','B.appendChild(D.createElement("br"));','var oIframe = D.createElement("iframe");','oIframe.src="http://a.hatena.ne.jp/check?robots=1&fixpage=1&url="+escape(url);','oIframe.width=\"100% \";','oIframe.height=\"60% \";','B.appendChild(oIframe);','B.appendChild(D.createElement("br"));','}','function forcedCheck(){','if(uTcnt<uT.length)checkThis(uT[uTcnt++]);','else clearInterval(Timer_ID);','}','function fCheckMain(){','var B=document.body,D=document;','B.appendChild(D.createTextNode(\'Leave from \"Fit to Screen\" mode\'));','uTcnt=0;','Timer_ID=setInterval("forcedCheck()",20000);','}','/\/ --></SCRIPT><BODY onload=fCheckMain()></BODY></HTML>'];var W=window.open();with(W.document){for(var i=0;i<LiteralHtmHead.length;i++)write(LiteralHtmHead[i]+'\n');close();}})();

タイマーを使って20秒待ってから実際のIFRAME処理を行うので、その20秒の待ち時間の間に「fit to screen」や「single column」のモードから「desktop」モードに変えて置くとIFRAMEが正しく(私の期待通りに)処理されます。………この動きは(1635)のOperaと同じで少しも改善されていないようです。


また、20秒間「fit to screen」モードのまま放置しておきIFRAMEの枠が表示された後に「desktop」モードに変えるとIFRAMEの枠の中の処理が始まる事があります(始まらない事もあります)。
この、”後から「desktop」モードに変えた場合”の動きは、(1635)のOperaよりも多少改善されているようです。(1635)のOperaでは、枠の中の処理が始まる事は有りませんでした。


明らかに改善されたIFRAME処理

2.のブックマークレットでは、DOMのdocument.createElement/appendChildでIFRAMEを作成していますが、↓こちらのように

javascript:(function() {var S = "";function autoCheck(url) {S += "<HR>" + url + "<BR><IFRAME SRC='http://a.hatena.ne.jp/check?robots=1&fixpage=1&url=" + escape(url) +"' width='600' height='300'></IFRAME>";return;}var checkurl="http://www.dozleng.com/updates/skep/index.php?act=calendar&skep=reverse";autoCheck(checkurl);var W=open();with(W.document){write("<HTML>"+S+"</HTML>");close();}})();

document.writeだけでIFRAMEを作成すると(1682)のOperaでは、スクリーンモードに無関係に、正しく処理されるようになっています。


この点に関しては確かに Good work! と言えるのですが、この改善と引き換えに失った「外部javascript呼び出し機能」は、あまりにも大きな代償です。


ぜひとも、「外部javascript呼び出し機能」を復活させてください。 > テッちゃん&アンちゃん
        ………  なーんて日本語で書いても読んでくれないのかなぁ?



追記:Opera 8.60 for Windows Mobile WZERO3 (1678) について

みなさんご存知のようにW-ZERO3用のOperaはこれまでずっと無料だったわけですが、(1682)は有料版になっていました。これを”早とちり”して「W-ZERO3でも突然有料に変わったのか?」と思っていたら、(1678)は無料でした。つまり「W-ZERO3Operaは無料だけど他のデバイス向けのOperaは従来どおり有料」だったわけでした。

(1682)のOperaについてレポートした時は、私が”早とちり”して頭に血が上っていて冷静な判断が出来なかったかも知れません。
この点について、深くお詫びします。 orz


どういう事かというと「Opera 8.60 for Windows Mobile (1682)」をインストールした時は、ただ何となくインストールしてしまっていたのですが、今回「Opera 8.60 for Windows Mobile WZERO3 (1678)」のインストールにあたっては、前のバージョン(1682)をアンインストールする前にリセットを行い、アンインストールが完了したら再度リセットを行ってから実際のインストールを行いました。
この「インストールの前にリセットを行う」事が良かったのだと思いますが、今のところ私の(1678)のOperaは、すこぶる安定した動作をしています。


しかし、それ以外に私が指摘した不具合は、何も変わっていません。
特に、「外部javascript呼び出し機能」の復活を希望します。