- 1 名前:デフォルトの名無しさん mailto:sage [04/12/05 00:09:18]
- オラ拡張作る。
前スレ Mozillaでプログラミング(XUL) pc5.2ch.net/test/read.cgi/tech/1019704370/
- 2 名前:デフォルトの名無しさん mailto:sage [04/12/05 00:18:44]
- テンプレ書いてるうちに立ってたorz
XULはXMLベースのUI記述言語です。 Mozilla,Firefox,Thunderbird,Netscape等の Gecko系のソフトウェアために開発されました。 このスレはXUL、javascriptで利用できるXPCOM、 拡張を作り方などを主に話しあうスレです。 前スレ Mozillaでプログラミング(XUL) pc5.2ch.net/test/read.cgi/tech/1019704370/ 姉妹スレ Geckoベースのブラウザを作ろう pc5.2ch.net/test/read.cgi/tech/1023546699/l50 >>2-50あたりに関連リンク、近況など。
- 3 名前:1 mailto:sage [04/12/05 00:20:13]
- >>2
うわ、すまそ
- 4 名前:デフォルトの名無しさん mailto:sage [04/12/05 00:21:06]
- >>1
いやいや、スレ立て乙。
- 5 名前:デフォルトの名無しさん mailto:sage [04/12/05 00:26:06]
- >>1
乙!
- 6 名前:デフォルトの名無しさん mailto:sage [04/12/05 00:28:06]
- Z。
- 7 名前:デフォルトの名無しさん mailto:sage [04/12/05 00:31:38]
- みなさん、overlayした拡張を作るときどのようにテストしてるんですか?
Firefoxで、xul単体だけなら引数の-chromeで表示・テストできるんですけど overlayした拡張のテスト方法が分かりません。
- 8 名前:デフォルトの名無しさん mailto:sage [04/12/05 00:36:23]
-
MozillaJapan 資料集: コアアーキテクチャ: XUL www.mozilla-japan.org/catalog/architecture/xul/ XUL Tutorial 日本語版 - 和訳ドキュメント一覧 www.mozilla.gr.jp/jt/xul/progress.html XULアプリケーション作成入門 www.mozilla.gr.jp/~kazhik/xul/tutorial.html XUL研 Moz2chなど xul-app.hp.infoseek.co.jp/ XULプログラマの参考書 www.bekkoame.ne.jp/~poetlabo/WWW/XULref/XUL_Reference.html
- 9 名前:デフォルトの名無しさん mailto:sage [04/12/05 00:40:47]
- XUL Planet 聖典
www.xulplanet.com/
- 10 名前:デフォルトの名無しさん mailto:sage [04/12/05 00:42:28]
- >>7
ブラウザ(chrome://browser/content/browser.xul)にオーバーレイしたXULなら 毎回ブラウザを再起動してテストしなければならない。
- 11 名前:デフォルトの名無しさん mailto:sage [04/12/05 01:02:37]
- 関連リンク
Mozilla Cross Reference(ソースコード検索) lxr.mozilla.org/mozilla/ 上とxulplanetでなんとかなる。以下余談。 mozilla.orgはサイト構成に問題があるので、自力で見つけるのは難しい。 www.mozilla.org/scriptable/components_object.html Components.interfaces.nsILocalFileとか機械的にコピペしてる人は 一度くらい読んでおくといいかも。 www.mozilla-japan.org/docs/tutorials/tinderstatus/ 公式拡張サンプル。mykはFirefox用の記事を書いてるって 3ヶ月くらい前に言ってたけど、まだ完成してないらしい。 多分忘れてる。 kb-upgrade.mozillazine.org/index.php/Main_Page 私が書いたコードも入っているが、はっきり言うと全然使えない。 でも、__proto__とかやけにマニアックな解説がある。 wiki.fdiary.net/xul/ 前スレの後ろの方で紹介されてた。 wikiだから、いつの間にか化けてるかも。 Javascriptを極めたいなら、 www.crockford.com/#javascript こういうのが好きな人とか。 foo.prototype.__defineGetter__('bar', function(){return 0;});
- 12 名前:デフォルトの名無しさん mailto:sage [04/12/05 01:05:47]
- >>10
ありがとうございます。 それは、www.mozilla.gr.jp/~kazhik/xul/tutorial.htmlに書いてあるように chromeディレクトリ下にxulなどのファイルを置いた状態でテストできるのでしょうか?
- 13 名前:デフォルトの名無しさん mailto:sage [04/12/05 01:08:40]
- もちろんできますよ。
- 14 名前:デフォルトの名無しさん mailto:sage [04/12/05 01:12:29]
- >>13
それは、引数の-chromeをつけてFirefox本体を起動するんですか? 質問が多くてすいません
- 15 名前:デフォルトの名無しさん mailto:sage [04/12/05 01:23:26]
- いや、そんな必要は無いです。
引数-chromeはあるクロムURLのXULを単体のウィンドウで開きたい時だけ使います。
- 16 名前:デフォルトの名無しさん mailto:sage [04/12/05 01:26:39]
- 多分、なんか勘違いしてるんじゃないかな。
overlayは当然インストールしないとテストできない。 で、インストールする時にzipで固めずにインストールするといい感じ。 kb-upgrade.mozillazine.org/index.php/Dev_:_Tips_:_Disable_XUL_cache
- 17 名前:デフォルトの名無しさん mailto:sage [04/12/05 01:30:00]
- >>15
そうだったんですかー。 じゃあoverlayしたxulを書いたら、普通に起動するだけでOKなんですね。 ありがとうございました。 >>16 ってやっぱりインストールしないとダメなんですね・・・ installed-chrome.txtを編集するだけじゃダメですか?
- 18 名前:デフォルトの名無しさん mailto:sage [04/12/05 01:33:17]
- installed-chrome.txtを編集するのとinstallするのは全く同じ。
インストーラーが書き換えるか手で書き換えるかの違いだけ。 でも、firefoxの場合、フォルダをインストールする方が楽だと思う。
- 19 名前:デフォルトの名無しさん mailto:sage [04/12/05 01:39:29]
- >>18
勉強になります。ありがとうございました。
- 20 名前:デフォルトの名無しさん mailto:sage [04/12/05 01:46:20]
- だから、順番が逆なんだね。
インストールスクリプトを最初に書いて、 白紙のoverlayをとりあえずインストールするんだよ。 で、いろいろいじって完成したら、コピーをとってアンインストールして、 zipで固めてインストールテスト、公開、鋭いツッコミ、ぎゃあ。
- 21 名前:デフォルトの名無しさん mailto:sage [04/12/05 01:49:20]
- 開発用の環境とインストールテスト用の環境は分けといた方が楽だよ。
(当然プロファイルは分けて)
- 22 名前:デフォルトの名無しさん mailto:sage [04/12/05 08:21:21]
- >>10
毎回ブラウザを再起動しなくてもブラウザ自体をリロードすればいい #そのためのxuld Ctrl+\でリロード nazodane.hp.infoseek.co.jp/extension/xuld.xhtml
- 23 名前:デフォルトの名無しさん mailto:sage [04/12/05 10:06:56]
- >>22
なるほど!!今まで馬鹿みたいに毎回再起動してたわ。
- 24 名前:デフォルトの名無しさん mailto:sage [04/12/05 10:35:11]
- 漏れは新しいウィンドウ開いて確認してる。
- 25 名前:デフォルトの名無しさん mailto:sage [04/12/05 12:04:20]
- >>24
ですね。私もそれです。
- 26 名前:デフォルトの名無しさん mailto:sage [04/12/05 23:30:52]
- >>11 に追加
www.hevanet.com/acorbin/xul/top.xul XUL コンポーネントのサンプル集。 XUL のリファレンスとしても使える。
- 27 名前:デフォルトの名無しさん mailto:sage [04/12/06 06:00:49]
- 誰あ前スレを閲覧できておくように保存してくれる人など居ないものか?
- 28 名前:デフォルトの名無しさん mailto:sage [04/12/06 06:30:10]
- 保存してまとめサイトにアップしておきました。
ttp://firefox.geckodev.org/?%B4%D8%CF%A2%A5%B9%A5%EC%A5%C3%A5%C9#i0181e3b
- 29 名前:デフォルトの名無しさん mailto:sage [04/12/06 06:47:10]
- >>18
フォルダをインストールってどうやるの?
- 30 名前:デフォルトの名無しさん mailto:sage [04/12/06 07:43:01]
- >>29
前スレにあったはず。
- 31 名前:30 mailto:sage [04/12/06 08:30:16]
- すまん。。
>>29 >>16
- 32 名前:デフォルトの名無しさん mailto:sage [04/12/06 16:35:35]
- >>16をわかりやすく言うと、
chromeにjarファイルの代わりにフォルダをいれて、 install.rdfにjarファイルの代わりにフォルダ名を書いとけってことだ
- 33 名前:デフォルトの名無しさん mailto:sage [04/12/06 19:53:41]
- >>31
>>32 トン!
- 34 名前:デフォルトの名無しさん mailto:sage [04/12/08 01:37:07]
- まとめサイトの和訳チュートリアル見ながら見よう見真似で拡張の中身とか
install.rdf install.jsを書いて試したんですが、いざインストールしても 再起動する時にエラーで正常にインストールされません。 エラー文にはcontent.rdfの位置指定が間違ってるとかあるんですが・・。
- 35 名前:デフォルトの名無しさん mailto:sage [04/12/08 06:38:25]
- install.jsはとりあえずは不要では?
また、content.rdfではなく、contents.rdfです。
- 36 名前:デフォルトの名無しさん mailto:sage [04/12/08 07:18:36]
- 質問です。firefoxの拡張を作ってるのですが
ツリーのカラムヘッダを非表示にするにはどのようにすればよいのでしょうか? treecolにhideheaderを追加してもダメでした。
- 37 名前:デフォルトの名無しさん mailto:sage [04/12/08 07:24:12]
- hidecolumnpicker="true"になってないとか?
- 38 名前:デフォルトの名無しさん mailto:sage [04/12/08 07:28:17]
- >>37
ありがとうございます。とりあえずこんな感じで書いてるんですが、ダメでした・・orz <tree flex="1"> <treecols> <treecol id="test" hideheader="true" hidecolumnpicker="true" primary="true" flex="1" /> </treecols> <treechildren> <treeitem container="true" open="true"> <treerow> <treecell label="test"/> </treerow> <treechildren> <treeitem> <treerow> <treecell label="test1"/> </treerow> </treeitem> </treechildren> </treeitem> </treechildren> </tree>
- 39 名前:デフォルトの名無しさん mailto:sage [04/12/08 07:31:48]
- hidecolumnpickerはtreeの属性です。
<tree flex="1" hidecolumnpicker="true"> 以下略
- 40 名前:デフォルトの名無しさん mailto:sage [04/12/08 07:33:25]
- treeにhidecolumnpicker="true"を書いたらいけました・・・
>>37さんありがとうございました。 スレ汚しすまそ。
- 41 名前:デフォルトの名無しさん mailto:sage [04/12/08 13:15:49]
- >>32
肝心なインストールの時はどうやるんだ・・・xpiに固めたら意味ないだろうし・・・ 英語読めねー誰か解説してくりー
- 42 名前:デフォルトの名無しさん mailto:sage [04/12/08 13:19:15]
- >>41
いや、xpiには固めるんだよ。
- 43 名前:デフォルトの名無しさん mailto:sage [04/12/08 13:23:50]
- >>42
マジですか、でもそれじゃあ編集できないんじゃ・・?
- 44 名前:デフォルトの名無しさん mailto:sage [04/12/08 13:26:28]
- あーなんとなく意味分かったかも。
- 45 名前:デフォルトの名無しさん mailto:sage [04/12/08 13:28:56]
- xpiには固めないでしょ。
情報が古いかもしれないけど、 www.mozilla.gr.jp/~kazhik/xul/tutorial01.html このページに書いてあるように手動でフォルダを置き、設定ファイルを書き換える。
- 46 名前:デフォルトの名無しさん mailto:sage [04/12/08 13:29:54]
- そう、いじるのはプロファイルの中身だから、
上手い具合に解凍されてるわけだ。
- 47 名前:デフォルトの名無しさん mailto:sage [04/12/08 13:30:30]
- >>45
そっちの方が古い
- 48 名前:デフォルトの名無しさん mailto:sage [04/12/08 13:32:07]
- >>45-46
とりあえずxpiに固めて試してみます。 お二人さんありがd
- 49 名前:デフォルトの名無しさん mailto:sage [04/12/08 13:37:37]
- tinderstatusとか、xpiだけどインストールすると
解凍された状態になる。 確か、torisugari氏もget file sizeのnon-jarred版を公開してたはずだが、 404だね。
- 50 名前:デフォルトの名無しさん mailto:sage [04/12/08 18:38:02]
- 一見404でも、この辺にあったりする
cgi29.plala.or.jp/mozzarel/addon/obsolete/phoenix_firebird_firefox/non-jarred/ cgi29.plala.or.jp/mozzarel/addon/firefox/tinderstatus/
- 51 名前:デフォルトの名無しさん mailto:sage [04/12/09 03:05:05]
- install.rdfのIDって適当に書いていいんですかね?
- 52 名前:デフォルトの名無しさん mailto:sage [04/12/09 03:38:23]
- >>51
だめ。GUID Generator を使おう。 extensions.roachfiend.com/cgi-bin/guid.pl
- 53 名前:デフォルトの名無しさん mailto:sage [04/12/09 04:02:42]
- >>52
おお!サンクス!
- 54 名前:デフォルトの名無しさん mailto:sage [04/12/09 07:20:19]
- たまに適当に書いているというか拡張の名前を含めているのもみかけるが。
- 55 名前:デフォルトの名無しさん mailto:sage [04/12/09 08:21:52]
- 適当すぎ。
- 56 名前:デフォルトの名無しさん mailto:sage [04/12/09 08:38:40]
- 仕様上の要求はGUIDなので、Web上で公開するならGUIDを使うべき。
実際にはどんな文字列でも動くから、 自分のマシンだけで使う場合は適当でいい。
- 57 名前:デフォルトの名無しさん mailto:sage [04/12/09 18:08:22]
- MSのGUIDGenとかで良いよ。
www.microsoft.com/downloads/details.aspx?FamilyID=94551f58-484f-4a8c-bb39-adb270833afc&DisplayLang=en
- 58 名前:デフォルトの名無しさん mailto:sage [04/12/09 20:09:14]
- GUIDGenは大文字と小文字が混じってるのがなぁ。
MACアドレス使ってるからこっちがいいんだろうけど。
- 59 名前:デフォルトの名無しさん mailto:sage [04/12/09 23:19:17]
- XPCOMで
aIOService.newChannelFromURI(aURISpec).QueryInterface(Components.interfaces.nsIHttpChannel); とかやってるのを見たのですが、newChannelFromURIの返り値はnsIChannelなのにnsIHttpChannelで QueryInterfaceできるのは何故でしょうか。
- 60 名前:デフォルトの名無しさん mailto:sage [04/12/09 23:52:16]
- nsIHttpChannelはnsIChannelを継承してるから。
www.xulplanet.com/references/xpcomref/ifaces/nsIHttpChannel.html
- 61 名前:デフォルトの名無しさん mailto:sage [04/12/10 01:43:07]
- >>60
うーん、それってあまり正確じゃないような。 継承してるのは確かだけどね。 あえて言うなら、「理由はない」な。 aURISpecのプロトコルがhttp[s]?じゃなかったら、 QueryInterfaceは失敗する。 こういう実装がごく自然だってことはわかってほしいが…
- 62 名前:59 mailto:sage [04/12/10 07:28:25]
- メソッドが返す値はドキュメントに書いてあるインタフェイスを
継承した別のインタフェイスを持っている可能性もあるってこと? メソッドが返す値が持っている可能性があるインタフェイスの一覧とかって どこ見たら分かりますか?
- 63 名前:デフォルトの名無しさん mailto:sage [04/12/10 08:30:46]
- firefoxでタブを一覧表示しようとしてるのですが
現在開いてるタブをすべて取得するにはどのようにすればよいのでしょうか?
- 64 名前:デフォルトの名無しさん mailto:sage [04/12/10 08:40:45]
- gBrowser.mTabContainer.childNodes
- 65 名前:デフォルトの名無しさん mailto:sage [04/12/10 08:46:02]
- >>64
ありがとうございます!
- 66 名前:デフォルトの名無しさん mailto:sage [04/12/10 11:06:21]
- >>62
>メソッドが返す値はドキュメントに書いてあるインタフェイスを >継承した別のインタフェイスを持っている可能性もあるってこと? そうなるね。 でもそれは、継承している親インターフェイス以外でもおき得る。 インターフェイスっていうのは、余分についてる分には文句の付けようがない。 よく本体と手足に喩えられるられるが、 「握手したいから手を差し出せ」 って言われた時、そいつの足が八本あろうがキャタピラになってようが、 手がついていれば握手に支障はない。 逆にいうと、足がいくらたくさんあっても手がなければ握手はできないから、 インターフェイスをきっちり実装するのが重要なんだけどね。 インターフェイスは必要条件を記述するためのものだから、 実際に送りつけられるインスタンスの十分条件とは限らない、って感じだろうか。 足が八本も付いてるのに、パンチしかしないのはもったいないなー、 と感じた時のためのQueryInterfaceで、 「足があるならキックもやらせようか」ということになる。 継承した子クラスってのは、普通の手だと思ってたのが 実は超合金製だった、とかそんな感じだね。 知らなきゃ握手にしか使えないが、 知ってれば釘を打ったりいろいろ使えて便利になる、と。
- 67 名前:デフォルトの名無しさん mailto:sage [04/12/10 12:22:55]
- JavaScriptの重たいループ処理をバックグラウンドで実行させる方法はありますでしょうか。
勘で以下のようにやりましたが、まったく処理が動きませんでした。 var runnable = { run : function(){ 重たい処理 } }; const CITHREAD = Components.interfaces.nsIThread; var thread = Components.classes['@mozilla.org/thread;1'].createInstance(CITHREAD); thread.init(runnable, 0, CITHREAD.PRIORITY_NORMAL, CITHREAD.SCOPE_GLOBAL, CITHREAD.STATE_JOINABLE);
- 68 名前:デフォルトの名無しさん mailto:sage [04/12/10 23:23:07]
- >>66
なるほど。 >>59のコードを書いた人はどうやって aIOService.newChannelFromURI(aURISpec)の返り値が Components.interfaces.nsIHttpChannelお持っていると 気付いたのでしょうか。 たまたまQueryInterfaceして分かったってこと?
- 69 名前:デフォルトの名無しさん mailto:sage [04/12/10 23:32:31]
- 内部の情報に詳しかったんじゃないの?
英語の方ならドキュメントも充実してるようだし・・・
- 70 名前:デフォルトの名無しさん mailto:sage [04/12/11 01:47:54]
- xpcom warpped objectかどうかを判定する確実な方法が
しりたいのですが、どうすればいいですか?
- 71 名前:デフォルトの名無しさん mailto:sage [04/12/11 02:29:33]
- try-catch構文でQueryInterfaceしてみるのが一番早いのではないでしょうか。
- 72 名前:デフォルトの名無しさん mailto:sage [04/12/11 03:16:44]
- >>70
instanceof 構文で出来るよ。 var channel = ioService.newChannel("www.example.com/", null, null); alert(channel instanceof Components.interfaces.nsIHttpChannel); // おそらく true alert(channel instanceof Components.interfaces.nsIFTPChannel); // おそらく false var channel = ioService.newChannel("ftp://ftp.example.com/", null, null); alert(channel instanceof Components.interfaces.nsIHttpChannel) // おそらく false alert(channel instanceof Components.interfaces.nsIFTPChannel) // おそらく true
- 73 名前:デフォルトの名無しさん mailto:sage [04/12/11 06:15:04]
- treeにアイテムを追加するにはどうすればいいの?
タブはaddTabとかあるけど、treeがいまいち分からん。
- 74 名前:デフォルトの名無しさん mailto:sage [04/12/11 08:49:33]
- >>71
>>72 ありがとうございます。 もうひとつ、nsIEnumerator,nsICollectionでは アイテムの返り値は、nsISupportsですが 例えば、nsICollectionのなかに、複数の[spconnect wapped nsI*]を格納した時 どのように、QueryInterfaceすれば良いのでしょうか。 NO INTERFACEなどが、出てしまい、うまくいきません。おねがいします。
- 75 名前:デフォルトの名無しさん mailto:sage [04/12/11 09:11:32]
- try{
support.QueryInterface(Components.interfaces.xxx); }catch(e){ if(e.name==" NO INTERFACE"}{ //インターフェイスがないとき } }
- 76 名前:74 mailto:sage [04/12/11 10:11:56]
- nsICollectionの中身が全部欲しいから、
GetElementAt(0)で、かってくる nsISupportsがもっている、interfacesのリストなどが わかるといいのですが。。
- 77 名前:73 mailto:sage [04/12/11 12:57:17]
- もしかして、appendChildとか使わないとダメですか?
- 78 名前:デフォルトの名無しさん mailto:sage [04/12/11 13:09:15]
- 俺だったらDOM使うけど他にも方法あると思うよ
- 79 名前:デフォルトの名無しさん mailto:sage [04/12/11 14:13:23]
- >>73
createElementNSで要素を作ってappendChildしていくのも可能だけど RDFデータソースからテンプレートで生成したほうがいい。
- 80 名前:デフォルトの名無しさん mailto:sage [04/12/11 14:27:20]
- 一応、nsIClassInfoっていう専用のインターフェイスがあるから、
それをもってるかどうかをまず確認した方がいいね。
- 81 名前:73 mailto:sage [04/12/11 14:30:49]
- >>79
その方法は、要素の入れ替わりが頻繁に起こるタイプのプログラムに向いてますかね? そういうのを作ろうとしてるもので・・・
- 82 名前:デフォルトの名無しさん mailto:sage [04/12/11 14:32:38]
- >>81
そうそう。動的なツリーを作る場合の定石。
- 83 名前:デフォルトの名無しさん mailto:sage [04/12/11 14:33:59]
- 要素の入れ替わりが一度でも起こるんならappendChild, removeChildなんてめんどくさくてやってられん。
- 84 名前:デフォルトの名無しさん mailto:sage [04/12/11 14:48:55]
- >>82
おお、そうなんですか。ではその方法で行こうと思います。
- 85 名前:デフォルトの名無しさん mailto:sage [04/12/12 15:03:53]
- binaryStreamをつかって読み書きしたいのですが
ファイルをバイナリで読み込む方法はわかったけど、 nsILocalFileをつかわずにpythonでいうStringIOのような ものを使うにはどうすればいい? 下のようにすれば、できるかと思ったけど。 nsISimpleStreamListener.init(outputStream,observer) outputStream.write("hoge",4) とすると、かならず固まるか、落ちてしまいます。 正しい使い方を、おしえてください;
- 86 名前:デフォルトの名無しさん mailto:sage [04/12/12 15:41:35]
- type="checkbox"にしたtoolbarbuttonやmenuitemで、oncommand時のcheckedプロパティが
MozillaとFirefoxとで逆のようです。 現状ではしかたなくnsPreferencesからapp.idを取得してFirefoxの場合は…としてますが、 他にうまい解決方法はありませんか? そもそもなぜFirefoxはcheckedが逆になってしまうのか謎。 サンプルコード <toolbarbutton type="checkbox" oncommand="alert(this.checked);" /> こちらは問題無し <checkbox oncommand="alert(this.checked);" />
- 87 名前:デフォルトの名無しさん mailto:sage [04/12/12 16:55:10]
- >>86
CSSが正しくプロパティを解釈出来てるんなら、 少なくともアトリビュートは正確、ってことになる。 alert((this.getAttribute("checked") == "true")? "Checked": "Not checked."); でどうだろうか?
- 88 名前:デフォルトの名無しさん mailto:sage [04/12/12 17:20:53]
- >>87
それでも結果は同じでした。
- 89 名前:デフォルトの名無しさん mailto:sage [04/12/12 17:24:02]
- oncommandとチェックの発生順序かな
是はどうしようもないかと
- 90 名前:デフォルトの名無しさん mailto:sage [04/12/12 17:34:31]
- oncommand="setTimeout(function(){alert(event.originalTarget.checked);}, 0);"
としたらうまくいきました。 Firefoxではoncommandよりもcheckedが先に変更されるということか。
- 91 名前:デフォルトの名無しさん mailto:sage [04/12/12 17:38:23]
- >>90
そうみたいだね。 DOM的に言えば、Semonkeyの方が正しい挙動だと思う。
- 92 名前:デフォルトの名無しさん mailto:sage [04/12/12 19:51:56]
- BookmarkなどのRDFデータソースってどこに置かれてるんでしょう?
- 93 名前:デフォルトの名無しさん mailto:sage [04/12/12 19:53:00]
- htmlに変換されて保存されてる
読み出すときはhtmlからrdfに変換されてる
- 94 名前:デフォルトの名無しさん [04/12/12 22:37:51]
- それにしてもブックマークのHTMLってなんであんなに汚いんだろう
- 95 名前:デフォルトの名無しさん mailto:sage [04/12/12 22:38:37]
- >>93
サンクス
- 96 名前:デフォルトの名無しさん mailto:sage [04/12/12 23:18:34]
- >>94
パーサが古いからだろうな。 どう考えてもソース公開以前のコードをそのまま使ってる。
- 97 名前:デフォルトの名無しさん mailto:sage [04/12/15 10:38:15]
- Firefoxのタブのコンテキストメニューのオーバーレイってどんな感じでやればいいんでしょう?
- 98 名前:デフォルトの名無しさん mailto:sage [04/12/15 11:31:35]
- スクリプトで動的に編集するしかないんじゃない?
- 99 名前:デフォルトの名無しさん mailto:sage [04/12/15 14:50:31]
- mTabContainerのonclickを上書きするとか?
行儀悪・・・
- 100 名前:デフォルトの名無しさん mailto:sage [04/12/15 17:28:17]
- >>99
popupshowingかpopupshownにイベントリスナーを追加したら?
|

|