2011-07-02 22 views
0

Firefox拡張機能として開発されたFirefoxツールバーのボタンをクリックしてjQuery UIを開く必要があります。 .jsファイルを.xulファイルに追加しましたが、何らかの理由で動作しません。Firefox拡張機能のダイアログを開く

.xulファイル:

.. 

<script type="application/x-javascript" src="chrome://tuttoolbar/content/tuttoolbar.js" /> 
<script type="application/x-javascript" src="chrome://tuttoolbar/content/scripts/jquery-1.4.2.min.js" /> 
<script type="application/x-javascript" src="chrome://tuttoolbar/content/scripts/jquery-ui-1.8.4.custom.min.js"/> 

... 

<toolbarbutton id="Example" tooltiptext="UI Dialog" label="Open jQ dialog" oncommand="objTutorialToolbar.sayHello1(event); event.stopPropagation();"/> 

tuttoolbar.js:上記のコードに誤りがある場合

.... 

    var objTutorialToolbar = { 

    ...... 

    sayHello1 : function(aEvent) { 

    var docUrl = window.content.document.location.href; 

    var div = document.createElement("div"); 

    div.setAttribute("id", "dialog_dummy"); 

    var body = document.getElementsByTagName("body").item(0); 

    body.appendChild(div); 

    $dialog = $('#dialog_dummy').html('').dialog(
    { 
     title : 'Title', 
     modal : false, 
     autoOpen : false, 
     show : 'slide', 
     hide : 'slide', 
     url : docUrl, 
     height: 550, 
     width: 1050 
    }); 

     $dialog.dialog("open"); 
    }, 

    ... 

} 

誰かが知っています、私はここでMozilla Firefoxの4、私のソースコードで使用します?

+0

エラーメッセージを含む、正確には機能しないものについて説明した場合に役立ちます。これにより、コードに間違いを見つける時間が節約されます。 –

+0

いくつかの奇妙な例外があります: "TypeError:r is null"。そして、私はjQueryダイアログのブラウザから現在のページを開くことができません... – sonjafon

答えて

0

documentは、コードが実行されているXULドキュメントです.HTMLドキュメントではないため、<body>要素(document.getElementsByTagName("body")は空のリストを示します)がありません。それがあっても、jQueryの「ダイアログ」はXULで使用されるボックスモデルではなく、HTMLの位置決めシステム用に構築されていることは確かです。言い換えれば - それはうまくいかない。おそらくあなたが望んでいたのは、<panel>要素(https://developer.mozilla.org/en/XUL/panel参照)です。あるいは、XULダイアログボックスをフルフェッチしても(https://developer.mozilla.org/en/XUL/dialoghttps://developer.mozilla.org/en/DOM/window.openDialog参照)。

+0

@ Wladimir:私は以下のコード行を削除しました:var body = document.getElementsByTagName( "body")item(0); body.appendChild(div);結果は同じです。例外はあります: "TypeError:r is null"です。私はすでにFirefoxの 拡張ボタンを開発しました。このボタンは、window.open()を使ってJavascriptダイアログで現在のWebページを開き、正常に動作します。しかし、私は問題があります:私はタイトルバーから場所を削除することはできません。そのため、タイトルの場所を非表示にするインラインjQueryダイアログを作成して開こうとしました。あなたはそれをより良い方法で知っていますか? – sonjafon

0

But, I have the problem: I can't delete location from the title bar. Because of that I've tried to create and open an inline jQuery dialog that will hide the location in title. Do you know a better way how to do that?

XULダイアログとプロンプトはカスタマイズ可能です:

Dialogs and Prompts

Prompt Service

プロンプト:

var promptService = Components.classes["@mozilla.org/embedcomp/prompt-service;1"] 
.getService(Components.interfaces.nsIPromptService); 

var result = promptService.confirm(null, "Title of this Dialog", "Are you sure?"); 

// result is now true if OK was clicked, and false if cancel was clicked 

ダイアログ:

<dialog 
    xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" 
    id="myDialogId" 
    title="My Dialog" 
    ondialogaccept="return onOK();" 
    onload="onLoad();" 
    persist="screenX screenY width height" 
    windowtype="myDialogWindowType"> 

    <script type="application/javascript" src="chrome://myext/content/mydialog.js"/> 
    <grid> 
    <columns><column/><column/></columns> 
    <rows> 
     <row align="center"><label value="Name:"/><textbox id="name"/></row> 
     <row align="center"><label value="Description:"/><textbox id="description"/></row> 
     <row align="center"><spacer/><checkbox id="enabled" label="Check to Enable"/></row> 
    </rows> 
    </grid> 
</dialog> 
関連する問題