2011-07-02 7 views
0

파이어 폭스 툴바 (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 : 나는 모질라 파이어 폭스 4가 여기 내 소스 코드를 사용하는 코드에서 실수가 위입니다

.... 

    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"); 
    }, 

    ... 

} 

누군가는 알고 있나요 ? 코드에서

+0

정확히 어떤 것이 작동하지 않는지 설명하고 오류 메시지가 있으면 도움이됩니다. 이렇게하면 코드에서 실수를 찾는 데 걸리는 시간을 절약 할 수 있습니다. –

+0

이상한 예외가 있습니다 : "TypeError : r is null". 그리고 jQuery 대화 상자에서 브라우저의 현재 페이지를 열 수 없습니다. – sonjafon

답변

0

document 는 위의 코드에서 실행중인 XUL 문서입니다. 그것은 <body> 요소가없는, 그래서 그것은 (document.getElementsByTagName("body") 당신에게 빈 목록을 제공) HTML 문서가 아닙니다. 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 대화 상자에서 현재 웹 페이지를 열면 제대로 작동합니다. 그러나 문제가 있습니다 : 제목 표시 줄에서 위치를 삭제할 수 없습니다. 그렇기 때문에 제목의 위치를 ​​숨길 수있는 인라인 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>