Открыть диалог jQuery ui в расширении Firefox

Мне нужно открыть диалоговое окно jQuery ui, нажав кнопку на панели инструментов Firefox (разработанной как расширение Firefox). Я добавил файлы.js в файл.xul, но по какой-то причине он не работает. Я использую Mozilla Firefox 4. Вот мой исходный код:

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

   ...

}

Кто-нибудь знает, где ошибка в коде выше?

2 ответа

Но у меня проблема: я не могу удалить местоположение из строки заголовка. Из-за этого я попытался создать и открыть встроенное диалоговое окно jQuery, которое будет скрывать местоположение в заголовке. Вы знаете лучший способ, как это сделать?

Диалоги и приглашения Xul можно настраивать:

Диалоги и подсказки

Оперативная служба

Незамедлительный:

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>

document в приведенном выше коде указан документ XUL, в котором выполняется ваш код. Это не документ HTML, поэтому он не имеет <body> элемент (document.getElementsByTagName("body") дает пустой список). И даже если бы он был, я вполне уверен, что "диалоги" jQuery созданы для системы позиционирования HTML, а не для блочной модели, которая используется в XUL. Другими словами - это не может работать. То, что вы, вероятно, хотели показать <panel> элемент (см. https://developer.mozilla.org/en/XUL/panel). Или, может быть, даже полнофункциональное диалоговое окно XUL (см. https://developer.mozilla.org/en/XUL/dialog и https://developer.mozilla.org/en/DOM/window.openDialog).

Другие вопросы по тегам