トップページ⇒tech
1001コメント388KB

Mozillaでプログラミング(XUL)

■ このスレッドは過去ログ倉庫に格納されています
0001MozillerNGNG
ム板住人のうちMozilla使ってる人は何%くらいかわかりませんが、
Mozilla 1.0 RC1がリリースされ、
XUL 1.0の仕様が一応フリーズしました。
なので、そろそろXULアプリケーションも出始めることでしょうし(希望的観測)
MozillaでのXULプログラミングについて騙りませんか。

Mozillaスレッド M10
http://pc.2ch.net/test/read.cgi/software/1019550671/
0677デフォルトの名無しさんNGNG
slashzilla を nightly の mozilla に入れてみたけどパネル登録ができなくて、
テストできないんだけど、たぶん…

keyset は navigator.xul の keyset に overlay しなきゃ。
DOMInspector で id 調べると navKeys になってる。
また、broadcaster 使ってるから、
http://www.xulplanet.com/tutorials/xultu/broadob.html
を参考にして、

<keyset id="navKeys">
<key id="hotkey_slashzilla" key="s" modifires"accel,shift" observes="viewSlashzillaSidebar"/>
</keyset>

これでどうかな。
0678677NGNG
modifires="accel,shift" のイコールが抜けてた、スマソ
0679674NGNG
すいません重要な事を書いておくのを忘れていました
使用ブラウザはFirefox0.8 4/3nightlyです
0680677NGNG
Firefox nightly で使えてるの?
slashzilla.mozdev.org 見て使えないものとばかり思ってた。
それはともかく Firefox なら <keyset id="mainKeyset"> にしちくり。
0681674NGNG
szoverlay.xulに

<keyset id="mainKeyset">
<key id="hotkey_slashzilla" key="s" modifires="accel,shift" observes="viewSlashzillaSidebar"/>
</keyset>
をoverlayのタグ内に挿入してみましたが駄目でした
また、navigator.xulを検索かけてみましたがFirefoxのフォルダ内にありませんでした…

SlashzillaですがFirefoxで問題なく使えています
Firefox Help 日本語版内の拡張内にあるSlashzillaのxpiを/.-J用に弄って使用しています
0682677NGNG
Firefox に slashzilla 入れてみた。これでできた。
勘違いしまくりでスマソ # RSSReaderPanel にほぼまんまのコードがあっただよ…

<menupopup id="viewSidebarMenu">
<menuitem key="hotkey_slashzilla" observes="viewSlashzillaSidebar"/>
</menupopup>

<keyset id="mainKeyset">
<key id="hotkey_slashzilla" key="s"
modifiers="accel,shift"command="viewSlashzillaSidebar"/>
</keyset>
0683674NGNG
月並みな表現で申し訳ないですがお付き合いありがとうございます
おかげさまでできました

#もっとxulやjsの勉強しなければ・・・
0684デフォルトの名無しさんNGNG
XulPlanetが、ちょっとリニューアル?されてるので上げ。
0685デフォルトの名無しさんNGNG
XULのDOM Methodに大きな変更が加えられたようです。
getElementByAttribute
http://forums.mozillazine.org/viewtopic.php?t=69302
childNodes
http://forums.mozillazine.org/viewtopic.php?t=69556

要するに、返り値のNodeListが
いわゆる"live"(treewalker的な)ではない、
ということですね。
もちろん、treewalkerをつかえば、
従来のような事が出来ると思います。
0686デフォルトの名無しさんNGNG
>>684
ちょっとじゃない〜 詳細はここにも。
http://www.xulplanet.com/ndeakin/article/256?show=c
Scriptable Object Referance 追加と commands, updating commands は
まとまった情報がなかったんで助かる〜
0687デフォルトの名無しさんNGNG
XULアプリコンテストってどうなったんでしょうか?
ひょっとして、エントリーがなかったとか?

コンテストを開くこと自体はたいへん良いと思うので、
告知を3ヶ月前くらいからやってほしいですね。
でも、パーティ関連にすると難しいのかもしれないなぁ。
じゃあ、お前が企画しろよ、って言われると、
参加者を集められる自信は全くないが…
0688デフォルトの名無しさんNGNG
エントリーはありましたよ。8つほど。
0689デフォルトの名無しさんNGNG
じゃ、そのうち結果発表とかあるんですかね。
去年はpiro氏のやつとmoz2chが出てたような記憶が。
0690デフォルトの名無しさんNGNG
投票数自体が少なかったけど、結果としてはXUL/Migemoが圧倒的大勝ですた。
RSS Reader Panelのflyson氏は出品されていませんでした。
だいたいそんなとこで。
0691デフォルトの名無しさんNGNG
XUL/Migemoでてたんですか。
このスレに時々来る通りすがりの人のブックマークのやつはどうでした?
0692デフォルトの名無しさんNGNG
通りすがり師のはなかったと思う。
出てたのは
・http://white.sakura.ne.jp/~piro/xul/xul.html
Ez Sidebar・Sidebar Window/タブキラー/テキストリンク/あと一つ(おもいだせない)
・http://www013.upp.so-net.ne.jp/unha999/fmutil/fmutil.html
・http://mimic.gelsoft.jp/(繋がらない…?インスタントメッセンジャーです。)
・http://www.smellman.homelinux.org/mozilla/xul-hack.html (カップラーメンタイマー)
・http://tkm.s31.xrea.com/xul/xulmigemo.shtml
0693デフォルトの名無しさんNGNG
>692
なるほど。
重ね重ね、ありがとう。
0694デフォルトの名無しさんNGNG
FirefoxのExtension API 暫定版が今日、初公開。
http://www.bengoodger.com/software/mb/extensions/howto.html
0695デフォルトの名無しさんNGNG
つーか、いきなりinstall.jsを捨ててきましたか…
まあ、前に競べたら、納得の内容ですね。
icon関係もうまく処理されているようです。
0696デフォルトの名無しさんNGNG
これは nightly で既に実装済みのものなのかな。
draft 段階のものを読むと
http://jt.mozilla.gr.jp/projects/firefox/extensions/index.html
install.js は後方互換のためか残されそうだけど。

個人的にはコマンドラインオプション実装して欲しい…
0697デフォルトの名無しさんNGNG
上のリンクにも書いてありますが、install.jsはfirefoxから、
一方的に無視されるだけなので、
たとえば、mozillaにインストールしたときは、
install.jsの内容が反映されることになります。

従来のinstall.jsが内部で行っていた、いわゆるscript然とした
細やかな設定は、html側のInstallTrigerで行うべきだ、
というのが、Ben Goodgerの持論なので。

>コマンドラインオプション
なぜ?
0698デフォルトの名無しさんNGNG
全ての拡張がUUIDで管理されるようになれば、
ひょっとして、複数の言語パックを同時にインストールできたりするように
なるのかなぁ。
0699デフォルトの名無しさんNGNG
XULコンテスト、私は何か勘違いしていたようです。
コンテスト用に何か書き降ろさないといけないのかと思ってました。
実は、無圧縮PNGを吐くアイコンエディターを
ネタで作ろうと思っていたのですが…

ところで、私が不甲斐ないばっかりに、
いろんな人が、blogで拡張の解説文を書いてくれています。
ttp://kengo.preston-net.com/archives/001281.shtml
ttp://scramble.no-ip.org/archives/cat_13.html
あと、朝顔日記様とか。

どうもありがとうございます。
0700デフォルトの名無しさんNGNG
http://update.mozilla.org/
がついに動きだすようですね。
http://forums.mozillazine.org/viewtopic.php?t=78912
0701デフォルトの名無しさんNGNG
今日、Firefoxの新しいインストーラーを試してみました。
結構イイ感じで動いてます。
0702デフォルトの名無しさんNGNG
XULに全く関係ない話で恐縮ですが、
JLPのxsltスレは純粋な読み物としても、結構面白いです。
ttp://moz.skillup.jp/jlp/viewtopic.php?t=96

で、先程parseをgoogle英和で調べてみたら、構文解析と書いてあります。
もちろん、私にとって一番わかりやすい訳は「パース」なのですが、
まあ、構文解析でも意味が通らなくはないなぁ、と感心してみたり。

パースは「分析」だけでなく、「読み込む」事自体の意味が加味されている
のが通例なので、「解析」よりは「解釈」の方がしっくり来ます。
例えば、parseIntの10進数と16進数なんかは、解析方法が違うのではなくて、
解釈方法が違う、って言ったほうがより自然な日本語だと思いませんか?

ただ、parse errorは「解釈失敗」より「解析失敗」の方がきれいな言葉ですよね…。
辞書に載っている以上、凡例が少なからずあるはずだから、やはり侮れません。
それでも、「XMLとして解析できません」よりは、「XMLとして解釈できません」
の方がいいと思うのですが…。

その他で気になったのは、"call"の訳語です。
確かに、「呼び出す」より「呼ぶ」の方が日本語として熟れているとは思いますが、
明らかにテクニカルタームなので、ここは「呼び出す」の方に一票を投じたいです。
「〜を呼ぶ」という文ではどれだけこなれていても、
日本語としての不自然さはどうしようもないですから、
日常的な意味ではないことを強調した方が親切でしょう。
0703デフォルトの名無しさんNGNG
FireFox とか Thunderbird とか結構重いように感じるんだけど(非力なマシンなので)、
XUL で作ったアプリも、ある程度の重量感は覚悟する必要があるのでしょうか?
0704デフォルトの名無しさんNGNG
>703
モノに拠ります。
XPCOMをロードして使うようなタイプのアプリは速いです。
逆にfor文で100万回まわすようなスクリプトを書けば、
重くなります。
インタープリターなので当然ですね。
0705デフォルトの名無しさんNGNG
>>702
XULに関係ない話につっこんで悪いんだけど
parse = 構文解析
っていう翻訳はコンパイラの教科書なんかで昔っから使われているから
日本で計算機科学系の学科に居た人はみんなそう訳すんだと思う…

で,parseに「読み込む」っていう意味が加味されているっていうけど
コンパイラの教科書的には,
【字句解析】→【構文解析】→【意味解析】→【最適化】→【コード生成】
とフェーズを分けて教えるんで「読み込み」は 構文解析器(parser)の
仕事とは考えない傾向がある気がする…
0706デフォルトの名無しさんNGNG
>>704
XUL 分かってなかったです。すまそ。
C からも使える物と思ってた。
0707デフォルトの名無しさんNGNG
>>704
Cからも使えますよ。
Mozilla.orgにも、サンプルコードくらいはあったと思います。
ただ、コンパイルすると、当然プラットフォーム依存になります。
単純にUIがほしいのなら、それとトレードオフで得る速度は釣り合いません。

MFCやGTKのリソースファイルも、
UIの部分はテキストで箇条書き(?)にしてあるだけですよね。
アセンブリングの恩恵は、ほとんどないと思います。

処理が重いなら、スクリプトをC++に移植する、
という手がありますがね。
0708デフォルトの名無しさんNGNG
linuxでアンチエイリアスしないにはどうすればいいんですか?
0709デフォルトの名無しさんNGNG
linuxのアンチエイリアスってxulネタなんでしょうか?
0710デフォルトの名無しさんNGNG
>>704
タブブラウザ拡張も XPCOM/C++ で書き直すと速くなるんだろうなぁ...
0711デフォルトの名無しさんNGNG
>>710
タブ拡が遅いですと?
0712デフォルトの名無しさんNGNG
>>710
全部書き直さなくても、パッチとしてマージするだけでもいくらか速くなると思う。
0713デフォルトの名無しさんNGNG
タブといえば、
Option to determine how other applications open new windows
http://bugzilla.mozilla.org/show_bug.cgi?id=172962
のターゲットマイルストーンがfirefox1.0betaになってますね。
どうやら、本気で実装されそうです。
0714デフォルトの名無しさんNGNG
どうでもいいけど、「呉下の阿蒙に非ず」だけ浮いてるよね。
0715デフォルトの名無しさんNGNG
誤爆か?
0716デフォルトの名無しさんNGNG
Fxの新しいエクステンションマネージャーでは、
32*32のアイコンが指定できるので、
某狐女のトレードマークを世界に向けて発信しようと思ったのですが、
なんか、お下品な連想をしてしまったのでやめました。

ttp://cgi29.plala.or.jp/~mozzarel/addon/aviary/externalapp/icon.png
なんというか、角度も重要なのかなぁ。
0717デフォルトの名無しさんNGNG
基本的なことなんだけど、XULのGUIライブラリって
GTKをラッピングしてるの?
0718デフォルトの名無しさんNGNG
>>717
まあ、100パーセントそうだとは言えないけど、
gtkが使える環境ならそう言って差し支えない程度には使ってるな。
0719デフォルトの名無しさんNGNG
xulから呼び出す外部のJavaScriptファイルに日本語を使いたいとき、
文字コードはどうすべきですか?UTF-8など色々試しましたがどれも化けます。

それともlocaleを使うべきなんでしょうか。
0720デフォルトの名無しさんNGNG
>>719
ファイル名はシステムの文字コードに依存するのでは?
WindowsならShift_JISかUTF-8でしょうか。
うまくいかないのはUConvでの文字コードの変換に失敗しているからではないかと予想。
0721デフォルトの名無しさんNGNG
ファイル名ではなく「ファイル中に」です。
つまり、alert("こんにちは");とかやると文字化けしてウィンドウが表示されます。
0722デフォルトの名無しさんNGNG
>>721
\u3053\u3093\u306b\u3061\u306f
みたいにUnicodeエスケープするしかないかも知れない。
0723デフォルトの名無しさんNGNG
それは面倒ですね。
やはり開発はすべて英語でやって、後からlocaleを付け加えるのが常識的なのでしょうか?
0724デフォルトの名無しさんNGNG
alert("こんにちは")にするなら、UTF-8じゃなくて、UTF-16の方がいい。
でもそうすると、script自体がパースされないだろうから、
クォーテーションの中だけUTF-16という
変則的な文字コードにしなきゃいけない。

結局、localeを追加した方が安上がりなのよ。
0725デフォルトの名無しさんNGNG
なるほど。了解しました。
詳しく教えていただいて、どうもありがとうございました。
0726ヽ(゚∀゚)メ(゚∀゚)ノNGNG
Moz2chのバヤイ、js自体はEUCで統一してるですが、表示すべき文字列を
ハードコーディングしないでlocaleを使用するようにしてるです。
但し、テストコードのような物だといちいちlocaleを書くのがめんどいという
後ろ向きな理由ですが、EUCで文字列を書いてnsIScriptableUnicodeConverter
を使ってEUC→UNICODEしてから表示するようにしてるです。
http://cvs.sourceforge.jp/cgi-bin/viewcvs.cgi/moz2ch/moz2chfirefox/content/moz2ch/charset.js?rev=1.2&content-type=text/vnd.viewcvs-markup
この辺参考にしてくださいです
0727デフォルトの名無しさんNGNG
Firefoxにjarファイルを使わない拡張を
新EMでインストール/アンインストールするパッチを書いてみました。
ttp://cgi29.plala.or.jp/~mozzarel/addon/aviary/FolderExtForNewEM/

0.9の場合、componentsフォルダに入っているnsExtensionManager.jsを
ttp://cgi29.plala.or.jp/~mozzarel/addon/aviary/FolderExtForNewEM/nsExtensionManager.js
と差し替えれば、ちゃんと動くはずです。
ナイトリーに使うのであれば、diff.txtをソースにあててください。

ただ、このバグがfixされた方がいいかどうかは微妙ですね。
もちろん、出来るにこした事はない、とは思いますが、
拡張やテーマを自分で書かない限り不要(いわゆるbloated)な気もします。
0728デフォルトの名無しさんNGNG
今日のチェックインみてたら、こんなバグがありました。

_contentのかわりにcontentを使いましょう
http://bugzilla.mozilla.org/show_bug.cgi?id=240947
0729デフォルトの名無しさんNGNG
もうお気づきかと思いますけど、http://update.mozilla.org/が稼働していますね。
特に何もしていませんが、私の拡張も(なぜか)2つだけ入っています。
新EM対応版を公表(?)した時期に関係がありそうです。
勝手にアップデートしてくれるのなら楽でいいや、
と思っていたのですが、どうやら初回サービスのみのようです。
更新しても、反映してくれません。

うそくさいダウンロード数が少しづつ増えるのをみるのは楽しいですが、
コメントに反論できないのがちょっと。
ちなみに、私の周囲では
"Must Have!"という、おばかなフレーズが流行っています。
0730デフォルトの名無しさんNGNG
Mozilla 1.7のダウンロードマネージャがCtrl+Wで閉じれないのや、
メーラーでアカウントを選択しているとスペースキーやNで次の未読に
移動できないのが不満で、comm.jarやmessenger.jarを直接書き換えて
目的を達成したんだけど、こういうのもxpiで実現可能?

xpiさっぱり分からん。
0731730NGNG
ちなみにダウンロードマネージャの方はこんな感じ。

--- comm/content/communicator/downloadmanager/downloadmanager.xul2003-10-22 00:35:56.000000000 +0900
+++ comm/content/communicator/downloadmanager/downloadmanager.xul2004-06-26 10:33:30.000000000 +0900
@@ -27,9 +27,13 @@

<?xml-stylesheet href="chrome://communicator/skin/"?>

+<?xul-overlay href="chrome://communicator/content/utilityOverlay.xul"?>
+
<!DOCTYPE window [
<!ENTITY % downloadManagerDTD SYSTEM "chrome://communicator/locale/downloadmanager/downloadmanager.dtd">
%downloadManagerDTD;
+<!ENTITY % utilDTD SYSTEM "chrome://communicator/locale/utilityOverlay.dtd" >
+%utilDTD;
<!ENTITY % downloadProgressDTD SYSTEM "chrome://global/locale/nsProgressDialog.dtd" >
%downloadProgressDTD;
]>
0732デフォルトの名無しさんNGNG
>>731
可能です。
空の拡張をつくって、contents.rdfで
chrome://communicator/content/utilityOverlay.xulをoverlayしてやればいいのです。

ただ、ロケールはoverlayのdoctypeに完全に依存するので、
utilityOverlayにdoctypeがなかったら、
utilityOverlayを手元にコピーしてdoctypeを追加したものを
あらためてoverlayした方が安全かもしれません。
0733デフォルトの名無しさんNGNG
あ、今みてみたら、ばっちりはいってますね。
http://lxr.mozilla.org/mozilla/source/xpfe/communicator/resources/content/utilityOverlay.xul
0734730NGNG
まいったな。せっかく教えてもらったのにさっぱり分かりませぬ。
一応XULチュートリアルの日本語訳も読んでいるが、分量が多くて
どこが該当するのかも分かりません。参考になりそうな拡張ってありますか?
それはともかく、xpiで実現可能というのが分かったのはありがたいです。
0735デフォルトの名無しさんNGNG
「Ctrl+何々でほげほげできるようにします。」系の拡張を
Firefox Help 日本語版あたりで探してみると良いかも。
やり方はそのままSuiteにフィードバックできるので。
0736デフォルトの名無しさんNGNG
>>735
thanx. 動きますた。

*contents.rdf
<?xml version="1.0"?>

<RDF:RDF xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
        xmlns:chrome="http://www.mozilla.org/rdf/chrome#">

  <RDF:Seq about="urn:mozilla:package:root">
    <RDF:li resource="urn:mozilla:package:dmclose"/>
  </RDF:Seq>

  <RDF:Description about="urn:mozilla:package:dmclose"
                  chrome:displayName="dmclose Extensions"
                  chrome:author=""
                  chrome:authorURL=""
                  chrome:name="dmclose"
                  chrome:extension="true"
                  chrome:description="dmclose">
  </RDF:Description>

  <!-- overlay information -->
  <RDF:Seq about="urn:mozilla:overlays">
    <RDF:li resource="chrome://communicator/content/downloadmanager/downloadmanager.xul"/>
  </RDF:Seq>

  <RDF:Seq about="chrome://communicator/content/downloadmanager/downloadmanager.xul">
    <RDF:li>chrome://dmclose/content/dmcloseOverlay.xul</RDF:li>
  </RDF:Seq>

</RDF:RDF>
0737デフォルトの名無しさんNGNG
*dmcloseOverlay.xul
<?xml version="1.0"?>

<?xml-stylesheet href="chrome://communicator/skin/"?>

<?xul-overlay href="chrome://communicator/content/utilityOverlay.xul"?>

<!DOCTYPE window [
<!ENTITY % utilityDTD SYSTEM "chrome://communicator/locale/utilityOverlay.dtd">
%utilityDTD;
]>

<window id="downloadManager">
</window>
0738デフォルトの名無しさんNGNG
なんか変なところありますか? さて、あとはインストーラか。

メーラーの方は、mail3PaneWindowCommands.js, mailWindowOverlay.js, mailWindowOverlay.js を
書き換えて動作を変更しているのですが、こちらは実現できますかね。
一部の関数のみをxpiで差し替えて動作させるようなことはできますか。
それともoncommand=で呼び出される関数から変更した関数に至るまでの部分を
すべてコピーする必要があったりしますか。
0739デフォルトの名無しさんNGNG
これでいいのですが、私が732-733で言いたかったのは、
直接utilityOverlay.xulをoverlayしてみては?ということです。

お分かりかと思いますが、overlayには2通りの方法があります。
ひとつは、「xulに直接<?xul-overlay?>を埋め込む」やりかたで、
もうひとつは「パッケージをインストールする」ことです。

結論から言いますと、この種の拡張(?)ではxulファイルが一切不要です。
0740デフォルトの名無しさんNGNG
>一部の関数のみをxpiで差し替えて動作させるようなことはできますか
できます。
javascriptの面白い点は、関数といえども、オブジェクトのひとつに過ぎない、
と言う点です。
よって、代入できてしまうのです。

値は他の関数でもいいのですが、
名前空間を不必要に汚すよりは、
関数リテラルを代入するほうが望ましい、と思われます。
0741デフォルトの名無しさんNGNG
あっ、こうすればいいのか。
  <RDF:Seq about="urn:mozilla:overlays">
    <RDF:li resource="chrome://communicator/content/downloadmanager/downloadmanager.xul"/>
  </RDF:Seq>

  <RDF:Seq about="chrome://communicator/content/downloadmanager/downloadmanager.xul">
    <RDF:li>chrome://communicator/content/utilityOverlay.xul</RDF:li>
  </RDF:Seq>

>お分かりかと思いますが、overlayには2通りの方法があります。
すんません。よく分かっていません。
0742デフォルトの名無しさんNGNG
>>741
そうです。そういうことです。

>よく分かってない
>>736,>>737では両方使っていたんですよ。
utilityOverlay.xulを736にoverlayして、
736をdowloadmanger.xulにoverlayしていたわけですよね。
>>741は一回しか使わなくて済んでいます。
当然741の方がお薦めです。
0743デフォルトの名無しさんNGNG
http://www.xulplanet.com/tutorials/xulapp/overlays.htmlを見ながら読み直して
ようやく分かってきました。

さて、次は関数の差し替え方法か。
0744デフォルトの名無しさんNGNG
>>743
そんなに難しい事じゃないですよ。
例えば openURI() を乗っ取るなら

window.openURI = function(aURI, aReferrer) {
// hogehoge
}

と書くだけでもOK。
内部で元の関数の機能を呼び出したいなら

var originalOpenURI = window.openURI;
window.openURI = function(aURI, aReferrer) {
// hogehoge
originalOpenURI(aURI, aReferrer);
// foobar
}

という具合です。
元の関数を保持しておくオブジェクトの名前が他とかぶると
いけないからということで、後者についてはいくつかやり方があります。
上は一番単純な例。
0745デフォルトの名無しさんNGNG
メーラーの方はちょっと置いといて、NN4みたいにBackSpaceで上方向へ
スクロールするようにする拡張を作ってみました。上の方法でばっちり動きました。
せっかくですので下の方法についてもう少し解説していただけるとうれしいです。
0746デフォルトの名無しさんNGNG
解説っていっても見たまんまなんですけどね。
>>774後半の例は以下のような内容です。

1. 関数オブジェクト "(window.)openURI" の内容である関数を参照するエイリアスを
  "originalOpenURI" という名前で作成。
2. "(window.)openURI"というエイリアスの参照先として新しい匿名関数を定義する。
3. 省略
4. "originalOpenURI"のエイリアスで参照している関数を実行。
5〜6. 省略

つまり

window.openURI => "function openURI()"

となっていたのを

originalOpenURI => "function openURI()"
window.openURI => "function()"(匿名関数)

に変更するということ。
0747デフォルトの名無しさんNGNG
NortonのAntiVirusかInternetSecurityかどっちのはたらきか知りませんが、
ポップアップ抑止の機能を導入すると、閲覧するWebページの先頭に


var SymRealWinOpen = window.open;

function SymWinOpen(url, name, attributes)
{
return (new Object());
}

window.open = SymWinOpen;


こんな感じのJavaScriptを挿入してきます。
やってることはこれと一緒です。
0748デフォルトの名無しさんNGNG
746はエイリアスとはちょっと違うと思う。
jsにとってのオブジェクトは実体そのものだからね。
本等にエイリアスなんだったら、名前解決が元のままのはずだしね。
0749デフォルトの名無しさんNGNG
>>746
えー、すんません、そういうことではなくて、

>元の関数を保持しておくオブジェクトの名前が他とかぶると
>いけないからということで、

の、回避方法はどういうのがあるのかなーということです。
0750デフォルトの名無しさんNGNG
>>749
その1。一意な名前の変数にする。
名前空間URIのようにすればほぼ確実。

window['http://hoge/fuga:openURI'] = window.openURI;
window.openURI = function(uri, ref) {
// hoge
window['http://hoge/fuga:openURI'](uri, ref);
// fuga
}


その2。クロージャを使う。

function init() {
var originalFunc = window.loadURI;
window.loadURI = function(uri, ref) {
//hove
originalFunc(uri, ref);
//fuga
}
}
init();

この例でいうinit()の部分さえ名前がかぶらなければ、
変数originalFuncは関数外部からはアクセス不可能なので
破壊される恐れもない。
0751デフォルトの名無しさんNGNG
>>750
なるほど。ありがとうございます。
メーラー用の拡張の作成は少し先のことになりそう。
0752デフォルトの名無しさんNGNG
XUL特集、らしい。
http://www.unixuser.jp/next.html
0753デフォルトの名無しさんNGNG
XULチュートリアルを勉強している者です。
http://xul-app.hp.infoseek.co.jp/xultu-janit/rdfscript.html
こちらのRDFデータソースの章に書いてあることを試したところ、
ドロップダウンリストに文字列を入力してボタンを押してアプリを再び開くと
ドロップダウンリストの項目がどんどん増えていくのですが、追加されたデータは
どこに保存されているのでしょうか。
「最後に、Flush 関数を使ってデータソースをディスクに書き出す。」とのことですが、
素人の安直な考えでは初めに読み込んだ recents.rdf ファイルへ書き込まれるのだろう
と思ったけど実際に開いてみると違いました。
0754デフォルトの名無しさんNGNG
要素のdatasourceをとってきてそれを直接編集しようとしていますね。
あまり、いいやり方ではないし、少し古いです。
多分、このスクリプトが書かれたころは、
Flush()で、recents.rdfに書き込まれていた、と想像しています。

ま、当世流とはちょっと違う、ということで。
0755753NGNG
よく調べたらプロファイルdirのlocalstore.rdfに保存されていました。
0756デフォルトの名無しさんNGNG
ま、そうだろうね。datasourcesで明示してなくても、rdf:localstoreは、
どの要素でも使用している。
というのは、persist属性とかで、値を保存しておいて、
長さや位置を覚えておくために必要だからだ。
0757デフォルトの名無しさんNGNG
firefox0.9でXULMAKER0.5使おうとしたら起動すら出来ないんだが
誰かやってない?
0758デフォルトの名無しさんNGNG
age
0759デフォルトの名無しさんNGNG
moz2chをインスコしたら、
mozillaのbookmarkが消失したぞ(゚Д゚)ゴルァ
0760plus7 ◆XULQA16CSE NGNG
http://tkm.s31.xrea.com/xulmigemo021.xpi
XUL/Migemoの正規表現を外部から使えるようにしてみました。
var re = window.xulMigemoCore.getRegExp("unko")
てな感じで正規表現オブジェクトを得られます。
もしよろしければお使い下さい。
0761デフォルトの名無しさんNGNG
>>752
買いに行ったらXULは来月号に飛ばされていた。
代わりにwxWidgetsとかいうやつが特集されていた。これはこれでおもしろそうではあるが。
0762デフォルトの名無しさんNGNG
拡張を作る上で、今までは、プログラムフォルダの下にあるchromeに
フォルダをつくって、appname.jarなどに固めずやってたのですが、
新しい仕様でも、extensionsの下にフォルダを置いてできるんですかねぇ?
about="urn:mozilla:extension:file:appname.jar"
のところをいじったら出来そうな気もするんですが・・・。
0763デフォルトの名無しさんNGNG
>>762
>>727
0764デフォルトの名無しさんNGNG
>>761
(´・ω・`)ショボーン
0765デフォルトの名無しさんNGNG
こっちに聞いた方が良いと思い書きます。
mozilla updateに登録ってどうすればいいのですか?

以下とマルチポスト
http://pc5.2ch.net/test/read.cgi/software/1088635005/383
0766デフォルトの名無しさんNGNG
XULチュートリアルのバインディングのサンプルがうまく動きません(バインディングが反映されない)。
http://xul-app.hp.infoseek.co.jp/xultu-janit/introxbl.html
このサンプルに何か問題点ありますでしょうか?

XUL (example.xul):

<?xml version="1.0"?>
<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
<?xml-stylesheet href="chrome://example/skin/example.css" type="text/css"?>
<window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<box class="okcancelbuttons"/>
</window>

CSS (example.css):

box.okcancelbuttons {
-moz-binding: url('chrome://example/skin/example.xbl#okcancel');
}

XBL (example.xbl):

<?xml version="1.0"?>
<bindings xmlns="http://www.mozilla.org/xbl"
xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<binding id="okcancel">
<content>
<xul:button label="OK"/>
<xul:button label="Cancel"/>
</content>
</binding>
</bindings>
0767デフォルトの名無しさんNGNG
>>766
"example"はパッケージとして登録されてる?
0768デフォルトの名無しさんNGNG
>>766
ええ、もちろんです。
installed-chrome.txt :

content,install,url,resource:/chrome/example/content/
skin,install,url,resource:/chrome/example/skin/classic/

ブラウザに直接クロムURLを打ち込めば一応ウィンドウは表示されます。
バインディングが成功すればそこにボタンも出るはずなのですが...
0769デフォルトの名無しさんNGNG
>>765
bugzillaに拡張を登録しろ、ってFAQに書いてあるが?
0770デフォルトの名無しさんNGNG
>>768
色々試してみたところ、ファイル名の拡張子がxblでは動かないようです。
xmlにすれば動きました。
私がこのチュートリアルをやってた頃はxblで問題なかったんですがねぇ。

XULPlanetのリファレンスはわりと頻繁に更新されていますが、
チュートリアルの方はMozilla1.0のころから更新されていないようです。
それをさらに和訳してあるわけですから、例が現実に追いついてないのも
仕方のないことなのでしょう。
0771デフォルトの名無しさんNGNG
>>770
うほほーー!xmlにしたら無事に出来ました!サンクスです。
0772デフォルトの名無しさんNGNG
>>757
こんなんどうでしょうか?
http://forums.mozillazine.org/viewtopic.php?t=96578
0773デフォルトの名無しさんNGNG
ttp://www.mozilla.gr.jp/~kazu/kazude/
これのコピーもっている人くれ
0774デフォルトの名無しさんNGNG
>>773
φ( ゜゜)ノ ゜
ttp://web.archive.org/web/20030625150958/http://www.mozilla.gr.jp/~kazu/kazude/
0775デフォルトの名無しさんNGNG
>>733
が言ってるのはサイトじゃなくてxpiのことじゃない?
0776773NGNG
>>774
xpiダウソできました。
ありがとうございました。
■ このスレッドは過去ログ倉庫に格納されています