Открыть диалог 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).