Skip navigation

Sign up | Lost password? | Help

だぶだぶOpera

Opera Widjet 開発手記

フリップバック

Windows版operaではマウスの右ボタンを押しながら左クリックしたり、
左ボタンを押しながら右クリックすると、ブラウザの戻る、進むと同じになってるらしい。
フリップバックとかロッカージェスチャーと言うらしい。

元はFirefoxの機能だったらしいけど、
ウチは5ボタンマウスの機能割り当てを使ってるので、たぶんこの機能は使わないと思う。

Macでは2ボタンの機能はないし(ないわけじゃないけど)、全てのアプリケーション(全てのブラウザではなく)で同じ操作が使えるのが最大のメリットかな。
ブラウザごとに覚える必要がない。

そういえばAppleにはApple Human Interface Guidlineという、全てのアプリケーションで共通の操作ができて、ユーザーに混乱させたり、あらたに操作方法を覚えなくてもいいようにしましょう、というガイドラインがあるんだけど、
今のMacOS Xにはそのガイドラインはまだあるんだろうか。。。

ブログマスコット

, ,

ブログマスコットであり、ホームページマスコットであり。
ころぽっけという名前で公開しました。

Operaのウィジェットとして開発していた物を、Wordpressテーマとして使えるようにしました。

スクリプトを調整後、一般公開予定です。

ウィジェットとして公開するのはかなり先になるかもしれません。

canvasと通常エレメントの併用

Opera Widjetとして実行する場合、
canvasの上にdivを重ねると、divを消した後、canvasが描画されなくなるというバグがあります。

DabWatchでは時計部分にcanvas、カレンダー部分や設定ダイアログにdivを使用していますが、設定ダイアログが必ず時計に重なります。
DabWatchでは、このバグに対応するため、
設定ダイアログを出す直前にcanvasのタイマーを止め、canvasのポジションを

style.left=-width+'px'

に移動させています。
設定ダイアログの左端が 0 なので、ちょうど画面の外の重ならない位置にあるというわけです。

で、設定ダイアログを閉じた直後にcanvasを元の位置に戻し、タイマーを動作させています。

通常のウェブページでは問題なく描画されます。

config.xml <auther>エレメント

画像とスクリプトを違う人が作る場合など、ウィジェットを2人以上で制作している場合の注意点です。

ウィジェット仕様書では、config.xmlファイルの著作者表示に<author>を使うようになっています。
DabWatchのconfig.xmlより

<widget>
<author>
<name>神崎渉瑠</name>
<email>****@******.**</email>
<link>http://www.wi-wi.jp/</link>
<organization>Wings-Winds</organization>
</author>
</widget>



この<author>は、config.xmlファイル1つに付き、1回しか使うことが出来ません。
また、これに内包する<name>、<email>、<link>も1回ずつしか使えません。
2回以上使用すると、ウィジェットが起動しなくなります。

かといって、独自のタグを追加しても起動しなくなります。

起動しないconfig.xml

<widget>
<author>
<name>神崎渉瑠</name>
<email>****@******.**</email>
<link>http://www.wi-wi.jp/</link>
<organization>Wings-Winds</organization>
<work>Scripting</work> <- 未定義のタグ
</author>
<author> <- authorタグの重複
<name>神崎水裕</name>
<email>****@******.**</email>
<link>http://www.wi-wi.jp/</link>
<organization>Wings-Winds</organization>
<work>Design</work> <- 未定義のタグ
</author>
</widget>


DOM-Table rows、cols

,

だぶだぶノートでも書いていること

HTMLのテーブルの行、セル(マス)を取得するのに、table.rows、table.cellsがありますが、
HTML-DOMでは、rowsはエレメントコレクションなので、
table.rows[0].cells[0]という書き方でも、table.rows.item(0).cells.item(0)という書き方でも可能です。

ただし、OperaとIEは実装が中途半端なので、
Operaではtable.rows(0).cells(0)という書き方(関数)、
IEではtable.rows[0].cells[0]という書き方(配列)でなければ動きません。

Operaのみitem()メソッドが実装されていません

1行中の全セルを取得するのにcellsを使うとブラウザごとに分岐させないと行けないので、getElementsByTagNameなど、標準的なDOMメソッドが使えますが、
row.getElementsByTagName('*')とすると、セルの中にが入ってると無駄な物まで取れてしまう。
tbody.getElementsByTagName('td')やではとが混在する場合に全セルを取れません。

その対策として、row.childNodes[ ]が使えるっぽいです。

2008/2/10
table.rows.item()の記述について修正

Opera Widjetのウインドウサイズ

ウィジェットを作るときに、ウインドウサイズは極力小さくした方が良いようです。
時計を作ったときに、サポートからチェック結果が返ってきました。

After downloading and analysing the widget i found the height/width specified in config.xml is 380/560 but i dont think widget does need that big height/width always. So it will be nice if you can use window.resizeTo() or window.resizeBy() to change the width/height at runtime from javascript. Adding extra height/width will reduce performance of widget and will make it work bit slow. Also it will display blue background on linux platform. You can see this by adding style attribute to html tag <html style="background:blue;">.



要約すると、

・実際に使用するウインドウサイズよりも大きなサイズを使うと、リソースを無駄に消費するので、必要なときにwindow.resizeTo()やwindow.resizeBy()を使うのがよい。
・Linuxでは背景色が青くなるので、ブラウザ画面が隠れてしまう。
・Linux環境をエミュレートする方法として、<html style="background:blue;">というのが使える。

実際にリリースするときは、一応、<html style="background-color: transparent;">をつけておくのが良さそうです。

スペース、nbsp、emsp比較

半角スペース、全角スペース、 、&thinsp;、&ensp;、&emsp;の比較
文字コードUTF-8、font-sizeは20px、グリッド幅は20px。
Operaだけ 以外を認識しません。
Safari、iCabは全角スペースが連続する場合、1つのスペースと見なします。
HTML4/XHTMLでは、その言語においてスペースに相当する物は、半角スペースと同じ扱いにすることになっていると思うので、文法上はこれらのブラウザが正しい表示と思います。

上段は各スペース1つずつ、下段は2つ連続させた物。

オペラの簡易デバッガ

簡単なデバッグツールとして。
opera.postError('err message');

これで詳細ツールのエラーコンソールに文字列が出力されます。
December 2009
M T W T F S S
November 2009January 2010
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31