[表示 : 全て 最新50 1-99 101- 201- 301- 401- 2chのread.cgiへ]
Update time : 05/09 12:52 / Filesize : 126 KB / Number-of Response : 449
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Mozillaでプログラミング(XUL) その3



1 名前:デフォルトの名無しさん mailto:sage [2006/11/27(月) 20:00:38 ]
オラ拡張作る。

XULはXMLベースのUI記述言語です。
Mozilla、Firefox、Thunderbird、Netscape等の
Gecko系のソフトウェアために開発されました。

このスレはXUL、JavaScriptで利用できるXPCOM、
拡張の作り方などを主に話しあうスレです。

前スレ
Mozillaでプログラミング(XUL) その2
pc8.2ch.net/test/read.cgi/tech/1102172958/
姉妹スレ
Geckoベースのブラウザを作ろう
pc5.2ch.net/test/read.cgi/tech/1023546699/l50

参考サイト
Mozilla Developer Center
developer.mozilla.org/
XULPlanet
www.xulplanet.com/

過去スレ
Mozillaでプログラミング(XUL)
pc5.2ch.net/test/read.cgi/tech/1019704370/

>>2-50あたりに関連リンク、近況などがあるかも。

409 名前:デフォルトの名無しさん [2009/06/18(木) 15:30:08 ]
履歴から特定のドメインにマッチしたものだけを削除する方法を教えてください

410 名前:デフォルトの名無しさん mailto:sage [2009/06/18(木) 16:06:56 ]
>>409
お前ウザいけど文盲なのか?白痴なのか?

Mozilla Firefox質問スレッド(初心者歓迎)の91
pc12.2ch.net/test/read.cgi/software/1244730199/232

232 名前:名無しさん@お腹いっぱい。[sage] 投稿日:2009/06/17(水) 04:45:36 ID:tn9rfOTe0
前スレでレスが付かなかった為、再度質問させてください。

【質問】
 ・ 指定したサイト(ドメインか下層ディレクトリ指定)のみ履歴を残したいのですが、
  それ以外を削除するアドオンもしくは、指定したサイトのみ履歴を残すアドオンを
  探しています。
【UserAgent】
 ・ Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10 (.NET CLR 3.5.30729)
【導入しているプラグインとそのバージョン】
 ・ Adobe Acrobat
 ・ IE Tab Plug-in
 ・ Mozilla Default Plug-in
 ・ Shockwave Flash
【導入している拡張とそのバージョン】
 ・ Flashblock 1.5.10
 ・ IE Tab 1.5.20090207
 ・ Tab Mix Plus 0.3.7.3
【使用しているテーマ】
 ・ Default 3.0.10

ご存知の方いましたら、教えてください。
よろしくお願いします。

411 名前:デフォルトの名無しさん mailto:sage [2009/06/18(木) 16:21:08 ]
そのレスは「それ”以外”を削除」「指定したサイト”のみ”履歴を残す」
と言ってるので「マッチしたもの”だけ”を削除」と言ってる>>409とは意味が真逆
なので文盲は>>410

412 名前:デフォルトの名無しさん mailto:sage [2009/06/18(木) 16:28:00 ]
質問もいい加減だよな, 対象としているクライアントがなにかサッパリだし

413 名前:デフォルトの名無しさん mailto:sage [2009/06/18(木) 17:45:10 ]
>>410
お前ウザいけど文盲なのか?白痴なのか?

414 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 15:39:28 ]
test

415 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 15:46:40 ]
前スレにも出てましたが、URLからHTMLDocumentオブジェクトって生成できないんでしょうか?
前スレで解決してた方は@mozilla.org/webshell;1を使って生成していたようですが、
xpcshellでwebshell.loadURIを叩くと落ちてしまいます。
xpcshell上でオブジェクトを生成したいのですが何か案はないでしょうか?

416 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 20:46:13 ]
これか?
mxr.mozilla.org/firefox/source/browser/components/microsummaries/src/nsMicrosummaryService.js#2098

417 名前:デフォルトの名無しさん [2009/08/14(金) 05:33:25 ]
firefoxアドオンを作成しています。HelloWorldしか作ったことがありません。
onload,onmouseover等のイベントをアドオンから強制的に発行できる方法があったら教えていただけると嬉しいです。



418 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 06:02:18 ]
>>416
iframeにソース突っ込むタイプですね。
既存のwindowオブジェクトを探して、そこから
iframeを新たに作成するようですが、そもそもxpcshell上には、
windowオブジェクトが存在しません。(xpcomから探しても無い。。。)
やはり、xpcshell上からの作成は無理なのでしょうか。。。

419 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 07:28:12 ]
>>418
あー、そういうのがあるのか
XUL より下はワカンネ

420 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 08:49:57 ]
>>419
ありがとうございました。
他にもirc.mozilla.orgで聞いてみましたが無理じゃね?って言われましたorz

421 名前:417 mailto:sage [2009/08/14(金) 20:04:01 ]
自己解決しました。
ソースコードからイベントに呼ばれる関数を拾ってきました。
失礼しました。

422 名前:デフォルトの名無しさん mailto:sage [2009/08/22(土) 16:44:49 ]
今、WindowsでXULアプリをxulrunnerで作るとしたら、お勧めIDEって何がありますか?

423 名前:DownloadWithCravingExplorer.uc.xul [2009/08/28(金) 14:43:02 ]
<?xml version="1.0" encoding="UTF-8"?>
<overlay id="CravingExplorer"
xmlns="www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<script type="application/x-javascript" xmlns="www.w3.org/1999/xhtml">
<![CDATA[

function downloadWithCravingExplorer()
{
var craving = new ActiveXObject( "CravingExplorer.Api" );
if ( craving != null) craving.addDownloadItem( gContextMenu.linkURL, "flv", true );
}

window.setTimeout(function() {
var contextMenu = document.getElementById("contentAreaContextMenu");
contextMenu.addEventListener("popupshowing", function(event) {
if (event.target != this) return;
gContextMenu.showItem("id-CravingExplorer", gContextMenu.onLink);
}, 0);
});

]]>
</script>

<popup id="contentAreaContextMenu">
<menuitem
id="id-CravingExplorer"
label="Craving Explorerでダウンロード"
accesskey="D"
oncommand="downloadWithCravingExplorer();" />
</popup>
</overlay>

424 名前:DownloadWithCravingExplorer.uc.xul [2009/08/28(金) 14:50:30 ]
>423のような感じで
ActiveXObject経由でローカルアプリのAPIをコールしたいんですけど、
やっぱりfirefoxではActiveXを使用するのは無理なんでしょうか?
(上記を実行させると当然"new ActiveXObject"のところで"in not defined"になります)

この辺もインストールして実行してみましたが、結果は同じでした。
code.google.com/p/ff-activex-host/

ちなみに上記のxulは
リンクの右クリックメニューに
「CravingExplorerへその動画をダウンロードする」タスクを追加する
コマンドを追加します。


425 名前:DownloadWithCravingExplorer.uc.xul [2009/08/28(金) 14:53:33 ]
>>424
×:in not defined
○:is not defined

426 名前:DownloadWithCravingExplorer.uc.xul [2009/09/02(水) 23:04:17 ]
>>423-425

自己レス。
コマンドラインで引数を受け取ってローカルアプリのAPIをコールするexeを自作して、
それをxul内のスクリプトからprocess.runで呼び出す方法でとりあえず解決しました。


427 名前:デフォルトの名無しさん mailto:sage [2009/09/09(水) 15:40:50 ]
質問です。Thunderbird用にアドオンを作り、そこからFirefoxで
表示しているページのdocumentオブジェクトにアクセスすることは
できますか?

たとえばTunderbird上に届いたあるメールのヘッダの特定の文字列を
Firefoxに表示しているページのフォーム上のあるinputに入れるとか。



428 名前:デフォルトの名無しさん [2009/11/11(水) 23:24:56 ]
ffやthunderbirdとは関係ないStandaloneなアプリをXULで開発しようとする場合に
一番参考になる書籍ってなんでしょう?

429 名前:デフォルトの名無しさん mailto:sage [2009/11/11(水) 23:38:20 ]
>>428
>ffやthunderbirdとは関係ない

釣り?文盲?白痴?

430 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 01:14:05 ]
fxなんて数あるGecko搭載アプリの一つでしかねーぞ。

431 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 04:14:24 ]
>>428
和書だとFirefox関連しかないみたいだし、
洋書でもEssential XUL Programmingくらいしか見つからなかった
現状では一番参考とかいうレベルではなく、それくらいしか選択肢無いみたい
それよりはXULRunnerで動いてるソフトのソースを見た方が参考になると思う
ja.wikipedia.org/wiki/XULRunner の動作するアプリケーション等を参考に

>>429
無知は罪じゃないから安心していいよ
そもそも>>1にちゃんと説明は書いてあるんだけどね

432 名前:デフォルトの名無しさん [2010/02/07(日) 19:04:19 ]
質問をさせてください。
Firefoxでロケーションが変わるたびにサイドバーに
表示しているxulコントロールの要素の値を変更させるものを作りたいと思っているのですが、
その設定の方法は

window.top.document.getElementById("sidebar-box").getElementById("コントロール名").setAttribute(要素名, 設定する値);

で良いのでしょうか?

433 名前:432 [2010/02/07(日) 19:19:55 ]
すみません、上記の方法で試してみたところうまく動いてくれませんでした。
正しい方法についてご教授願いたく思います。

434 名前:デフォルトの名無しさん mailto:sage [2010/02/08(月) 11:45:27 ]
>432
サイドバーの内容はサブフレーム扱いだからそれでは動かないと思う
そのスクリプトが動いてるのはbrowser.xulの名前空間?
それともサイドバー内の名前空間?
browser.xulの名前空間なんだったらこう。

document.getElementById("browser").contentDocument.getElementById("myControl").setAttribute("attributeName", "value");



435 名前:デフォルトの名無しさん mailto:sage [2010/02/08(月) 11:54:49 ]
すまん間違えた
document.getElementById("sidebar").contentDocument.getElementById("myControl").setAttribute("attributeName", "value");


436 名前:432 [2010/02/09(火) 23:46:16 ]
>435
ありがとうございます。
しかし試してみましたが期待した動作をしてくれませんでした。
名前空間についてですが、まだそこまでの理解をしておらず、調べながらになりますが、
<overlay id="sidetempOverlay" xmlns="www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"></overlay>
内にスクリプトがあります。名前空間はこのxmlns要素内の事でよろしかったでしょうか?
連続の質問で大変申し訳ありません。

437 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 00:07:59 ]
>>436
その<overlay>は何をオーバーレイしてるの? browser.xul? 別の物?



438 名前:432 [2010/02/10(水) 00:51:45 ]
オーバーレイをしているファイル内では以下のように記述しています

<?xml version="1.0"?>
<overlay id="sidetempOverlay" xmlns="www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<script type="application/x-javascript" src="locationchange.js"></script>
<menupopup id="viewSidebarMenu">
<menuitem observes="side_with_page" />
</menupopup>
<broadcasterset>
<broadcaster id="side_with_page" label="SIDEBAR"
autoCheck="false" type="checkbox" group="sidebar"
sidebartitle="SIDEBAR" sidebarurl="chrome://sidebar/content/side_content.xul"
oncommand="toggleSidebar('side_with_page');"/>
</broadcasterset>
</overlay>

[表示]→[サイドバー]に表示するボタンと、
それを押すことで表示されるサイドバーです。
サイドバー内には独自に作ったxulが入るようになっています。

これでbrowser.xulを書き換えていると言うことなのでしょうか。


439 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 20:00:36 ]
それなら>435でサイドバー内にアクセス出来ると思うんだけどな。
↓にもそう書いてあるし。
ttps://developer.mozilla.org/en/Code_snippets/Sidebar#Accessing_the_sidebar_from_a_browser.xul_script
「期待した動作をしない」ってのがどういう状況なのか分からないのでなんとも。

そもそも、ロケーションの変更でサイドバーの内容を書き換えるなら、
サイドバーのスクリプトからtabbrowserにProgress Listenerを追加するのが普通だと思うんだが。
ttps://developer.mozilla.org/ja/Code_snippets/Progress_Listeners

440 名前:439 mailto:sage [2010/02/10(水) 20:12:46 ]
あ、ProgressListenersの方のURLはサイドバー関連は書かれてないや。間違って張ってしまった。

441 名前:432 [2010/02/10(水) 23:33:52 ]
>サイドバーのスクリプトからtabbrowserにProgress Listenerを追加するのが普通だと思うんだが。

一度そうしようとしたことがあるのですが、
<overlay>内でJavaScriptファイルのインポートを記述した場合、
自動でスクリプトが実行されているのか、リスナーに追加されていたのですが、
<window>内でJavaScriptファイルのインポートを記述した場合、
リスナーに追加されていないようでした。

<window>でonload属性でスクリプトを動かせば良いのかと思い試したのですが、
<window>外にインポートの記述をしたところ、エラーを吐かれてしまいました。
以下がエラー文です
「XML パースエラー: ドキュメント要素の後ろに不正な文字列があります。」

サイドバーのスクリプトからリスナーを追加する方法を教えていただきたいです。
長々と質問を続けて大変申し訳ありません。

442 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 00:06:38 ]
<window onload="init();" onunload="uninit();">
<script type="application/x-javascript" src="progress.js"/>
</window>
で、progress.jsに
function init() { top.gBrowser.addProgressListener(〜
って書けばいいと思うんだが。

443 名前:432 [2010/02/11(木) 00:37:03 ]
>>442
試してみました、しかしどうも動いてくれません。

ちなみにサイドバーのスクリプト内で
document.getElementById("sidebar").contentDocument.getElementById("myControl").setAttribute("attributeName", "value");
を動かしてみたところ、コントロールの要素の値は変更されていませんでした。

444 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 01:07:47 ]
いやいやいや、そりゃサイドバーのスクリプトから見たら
document.getElementById("sidebar").contentDocument
が存在するわけないでしょ。もうすこし冷静になって考えようよ。
あと、「動かない」だけじゃなくて、どこまで出来てて、どこから出来ないのか、
どこで詰まっててどういうエラーが出るのか、ちゃんと自分で把握して説明しないと、
エスパーでもないかぎりアドバイスしようがないよ。

445 名前:432 [2010/02/11(木) 03:10:22 ]
申し訳ありません、確かにその通りでした。

ところで急展開申し訳ないのですが、
現在期待した動き(ロケーションが変わったときにサイドバーのコントロールの要素が変更される)
が動きました。
どうやらaddEventListenerをしていなかったのが原因だったようです。

446 名前:432 [2010/02/11(木) 03:14:07 ]
JavaScriptのソースは以下のとおりです
(locationchange.js)
const STATE_START = Components.interfaces.nsIWebProgressListener.STATE_START;
const STATE_STOP = Components.interfaces.nsIWebProgressListener.STATE_STOP;
var bgipeo_Listener = {
QueryInterface: function(aIID){
if (aIID.equals(Components.interfaces.nsIWebProgressListener) ||
aIID.equals(Components.interfaces.nsISupportsWeakReference) ||
aIID.equals(Components.interfaces.nsISupports))
return this;
throw Components.results.NS_NOINTERFACE;
},

onStateChange: function(aWebProgress, aRequest, aFlag, aStatus){
if(aFlag & STATE_START){}
if(aFlag & STATE_STOP){}
return 0;
},

onLocationChange: function(aProgress, aRequest, aURI){
document.getElementById(コントロール名).setAttribute(要素名, value);
return 0;
},

447 名前:432 [2010/02/11(木) 03:15:04 ]
続き

onProgressChange: function() {return 0;},
onStatusChange: function() {return 0;},
onSecurityChange: function() {return 0;},
onLinkIconAvailable: function() {return 0;}
}

function init(){
top.gBrowser.addProgressListener(bgipeo_Listener, Components.interfaces.nsIWebProgress.NOTIFY_STATE_DOCUMENT);
}
function uninit(){
top.gBrowser.removeProgressListener(bgipeo_Listener);
}

var myExtension = {
init: function() {
top.gBrowser.addProgressListener(Listener, Components.interfaces.nsIWebProgress.NOTIFY_STATE_DOCUMENT);
},
uninit: function() {
top.gBrowser.removeProgressListener(Listener);
}
};

window.addEventListener("load", function() {myExtension.init()}, false);
window.addEventListener("unload", function() {myExtension.uninit()}, false);

サイドバー
<window onload="bgipeo_init();" onunload="bgipeo_uninit();">
<script type="application/x-javascript" src="locationchange.js" />
</window>



448 名前:432 [2010/02/11(木) 03:20:43 ]
親切にお答えいただき誠にありがとうございました。
また大量の投稿大変申し訳ありませんでした。
次からは皆様のお役に立てればと思います。
では失礼いたします。







[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<126KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef