EDITЗаменить XML с ответом от XMLHttprequest
Со всеми изменениями по моему вопросу он довольно длительный. Поэтому позвольте мне попытаться немного укоротить его и облегчить его выполнение.
Я создаю приложение XUL с помощью XULRunner. Я загружаю страницу Dummy XUL, а затем я хочу использовать XMLHttprequest
для загрузки всего с моего сервера (локального сервера ampps), используя PHP для выполнения всей реальной работы. Мой PHP настраивает заголовок XML Content-Type
и форматирует все выходные данные как XML.
Вот что такое функция JavaScript, которая обрабатывает XMLHttprequest
и ответ, в настоящее время выглядит.
function RequestData()
{
if (window.XMLHttpRequest)
{
var url = 'newmenu.xml';
var request = new XMLHttpRequest();
}
else
{
var url = 'http://localdomain.prog/';
var request = Components.classes['@mozilla.org/xmlextras/xmlhttprequest;1'].createInstance(Components.interfaces.nsIXMLHttpRequest);
}
request.onload = function(aEvent)
{
var xmlDoc = aEvent.target.responseXML;
var oldmenu = document.getElementById('menubarwrapper');
oldmenu.parentNode.replaceChild(xmlDoc.documentElement, oldmenu);
};
request.onerror = function(aEvent)
{
window.alert("Error Status: " + aEvent.target.status);
};
request.open('POST', url, true);
request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
request.send('pageid=menu');
}
The RequestData()
вызывается с окном onload
события.
В моем первоначальном коде ничего не было, но по мере того, как я исследовал и тестировал, я в конечном итоге получил XULRunner, чтобы выпустить некоторые ошибки в консоли ошибок. В конечном итоге это привело к тому, что, я полагаю, были рабочими версиями, но я просто этого не знал.
Ошибки Консоль была тушением этого сообщения (и до сих пор)
Предупреждение: XUL коробка для оконного элемента содержала встроенные панели инструментов ребенка, заставляя все свои ребенок, чтобы быть обернут в блоке.
Чтобы узнать, работал ли мой код, мне пришлось его загрузить в Firefox. Отсюда причина для if (window.XMLHttpRequest)
, так как это позволяет мне тестировать как с Firefox, так и с XULRunner. Затем я взял XML, который генерировал мой PHP, и сделал локальный файл, так как Firefox не позволит XMLHttprequest
загружать удаленный файл (даже если он является технически локальным).
Приведенный выше код импортирует XML и заменяет <menubar id="menubarwrapper">...</menubar>
. Но в Firefox и XULRunner меню исчезает. Я могу видеть все элементы, если вы используете Firebug, но почему они больше не видны, выходит за меня, и ошибок в консоли Firebug нет. Здесь я в настоящее время тупик.
В случае его использования, ниже приведена копия файла Dummy XUL, который я загружаю.
<?xml version="1.0"?>
<?xml-stylesheet href="main.css" type="text/css"?>
<window id="main" title="My App" width="1000" height="800" sizemode="maximized" orient="vertical" persist="screenX screenY width height" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<script type="application/javascript" src="main.js"/>
<toolbox id="toolboxwrapper">
<menubar id="menubarwrapper">
<menu id="file-menu" label="File" accesskey="F">
<menupopup id="file-popup">
<menuitem label="Refresh" funcname="RefreshWin"/>
<menuitem label="Open Window" funcname="OpenWin" acceltext="Ctrl+O" accesskey="O" />
<menuseparator/>
<menuitem label="Exit" funcname="ExitProg"/>
</menupopup>
</menu>
<menu id="edit-menu" label="Edit" accesskey="E">
<menupopup id="edit-popup">
<menuitem label="Undo"/>
<menuitem label="Redo"/>
</menupopup>
</menu>
</menubar>
</toolbox>
</window>
XML, который генерирует мой PHP является довольно длительным, но в основном это <menubar>
элемент со всеми его дочерними элементами, аналогичными выше, но с гораздо более <menu>
и <menuitem>
элементов.
Попробуйте [DOM Inspector] (https://addons.mozilla.org/firefox/addon/dom-inspector-6622/), чтобы проверить, как выглядит ваш документ DOM после его изменения. Какой элемент '' '' xmlDoc.documentElement''''? – Kashif
@ Kashif - Я не использовал инспектор DOM, но после его загрузки, на первый взгляд, похоже, что он похож на то, что находится в Firebug. Я действительно создал тест в Firefox, чтобы узнать, что выводит firebug. Для получения дополнительной информации см. Мое второе редактирование. – Krik
@ Kashif - забыл ответить на ваш вопрос. xmlDoc.documentElement - это элемент, который генерируется моим PHP –
Krik