Как добавить CSS для динамических MenuItems в MenuList и Как получить значение MenuItem в XUL - PullRequest
1 голос
/ 13 августа 2011

Я хочу создать menuList, как показано на картинке. enter image description here

https://developer.mozilla.org/En/XUL:menuitem#Examples Когда я проверял на сайте Firefox, он показывает «Примечание. Элемент menu должен иметь класс menuitem-iconic для отображения изображения.»

В моем случае я загружаю menuItems динамически из дерева XUL (получение значения дерева XUL и добавление его в MenuList).

Это список меню:

<menulist id="firstname">
    <menupopup >    
    </menupopup>
    </menulist>

<menulist id="laastname">
    <menupopup>         
    </menupopup>
    </menulist> 

Файл CSS:

.menu-iconic-left {
  min-width: 1.45em;
}

.menu-iconic-icon {
  width: 16px;
  height: 16px;
}

menu.menu-iconic > .menu-iconic-left,
menuitem.menuitem-iconic > .menu-iconic-left {
  -moz-appearance: menuimage;
  padding-top: 2px;
}

Я нашел весь этот код CSS в каталоге chrome моего браузера Firefox: "Баночка: Файл: /// C: /Program%20Files/Mozilla%20Firefox/chrome/classic.jar /skin/classic/global/menu.css"

.
  1. Как я могу создать Iconic menulist, используя CSS?

Моя вторая проблема - получить значение menuItem. Как я уже говорил выше, я могу получить текст ячейки дерева и добавить его к элементу MenuItem в Menulist. У меня есть около 8 Menulist, и после того, как пользователь решит выбрать значения, я хочу получить эти значения и добавить его в мой XML-файл.

Я пытаюсь таким образом, но кажется, что это неправильный способ, потому что он получает значение MenuItem из MenuList.

function mer()
{
alert('one' ); //This aler is working.

var src = "\n\<CONTACT>\n\
\<FirstName>"+document.getElementById("firstname").value+"</FirstName>\n\   //the id of the menulist.
\<LastName>"+document.getElementById("laastname").value+"</LastName>\n\     //the id of the seconf menulist.
\</CONTACT>\n";

alert('one' );  //This alert is not working.

var node = srcToNode(src);
alert(node);
    if (objXMLDoc.childNodes && objXMLDoc.childNodes.length) {
        for (var i = 0; i < objXMLDoc.childNodes.length; ++i) {
    if (objXMLDoc.childNodes.item(i).childNodes && objXMLDoc.childNodes.item(i).childNodes.length) {
         var x = objXMLDoc.childNodes.item(i).childNodes.length;
        var lastNode = objXMLDoc.childNodes.item(i).childNodes.item(x-2); } } }
objXMLDoc.appendChild(node);
var textNode = document.createTextNode("\n");
objXMLDoc.appendChild(textNode);

var textNode1 = document.createTextNode("\n");
objXMLDoc.appendChild(textNode1);

var serializer = new XMLSerializer();
var prettyString = serializer.serializeToString(objXMLDoc);
prettyString = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + prettyString;
//saveFile(prettyString, "C:\\merge.xml");
alert('Merge is done');
document.getElementById('group').setAttribute("hidden", "true");

} 

function srcToNode(src) {
    var domObject = (new DOMParser()).parseFromString(src, "text/xml");
    return domObject.documentElement;
} 

2.Как я могу получить значение моих menuItems menuList и обновить его до моего XML-файла.

Спасибо за вашу помощь и поддержку.

1 Ответ

2 голосов
/ 13 августа 2011

Во-первых, чтобы создать элемент меню со значком, просто установите класс элемента меню, чтобы включить 'menuitem-iconic'.Вы можете сделать то же самое в меню, включив «menu-iconic» в класс.Например:

<menulist id="metasyntactic" class="menu-iconic">
  <menupopup>
    <menuitem class="menuitem-iconic" value="foo">Foo</menuitem>
    <menuitem class="menuitem-iconic" value="bar">Bar</menuitem>
    <menuitem class="menuitem-iconic" value="baz">Baz</menuitem>
  </menupopup>
</menulist>

Возможно, вы уже знаете это, но menulist предоставляет очень удобный метод, который добавляет вам пункт меню:

document.getElementById("metasyntactic").appendItem("Zed", "zed");

(см. https://developer.mozilla.org/en/XUL/menulist#m-menulist.appendItem)

Во-вторых, вы можете получить значение выбранного элемента меню, просто прочитав свойство value у menulist:

var selectedValue = document.getElementById("metasyntactic").value;

(см. https://developer.mozilla.org/en/XUL/menulist#a-value)

...