Полезная информация

Юристы зарабатывают огромные деньги и славу, оперируя хорошим знанием законов. Правила форума — простой путь к успешному общению.

№103-02-2006 13:28:14

d1pr3d
Участник
 
Группа: Members
Зарегистрирован: 03-02-2006
Сообщений: 2

Использование ENTITY в javascript

Привет.
Я пишу расширение для Firefox. Изначально все лэйблы и строчки были hardcoded, но сейчас начал всё переписывать как пологается, вынес строки в entity, всё прекрасно работает, но есть такая проблема. У меня есть меню, которое динамически заполняется javascript`ом — из массива читаются ссылки и добовляются к меню, потом вне цыкла добавляется пункт меню, какбы статичный. Вот эта функция:

Выделить код

Код:

function qlinks_linksMenuPopulate() {
    
        var qlinks_menu = document.getElementById('qlinks-links-menu');
        
        // удаляю все старые пункты меню
        for (i=qlinks_menu.childNodes.length; i>0; i--)
            qlinks_menu.removeChild(qlinks_menu.childNodes[0]);

        var linksArray = qlinks_links2arr();
        arrl_cc = linksArray.length;

        // здесь заполнение
        if (arrl_cc>0)
        {
            for (loop=0; loop<arrl_cc; loop++)
            {
                var tmp_elem = document.createElement("menuitem");
                tmp_elem.setAttribute("label", linksArray[loop].name);
                tmp_elem.setAttribute("tooltiptext", linksArray[loop].link);
                tmp_elem.setAttribute("oncommand", "qlinks_goto(event, '"+linksArray[loop].link+"');event.preventBubble();");
                qlinks_menu.appendChild(tmp_elem);
            }
            qlinks_menu.appendChild(document.createElement("menuseparator"));
        }   
        
        // попробуем создать открывашку окна
        var newwin_item = document.createElement("menuitem");
        newwin_item.setAttribute("label", "Настройки");
        newwin_item.setAttribute("tooltiptext", "Настройки");
        newwin_item.setAttribute("oncommand", "window.open('chrome://qlinks/content/qlinks-prefs-window.xul', 'qlinks-prefs-window', 'chrome, width=600, height=300, resizable=yes, centerscreen, modal');event.preventBubble();");
        qlinks_menu.appendChild(newwin_item);
        // получилось
        
        return true;
    }// qlinks_linksMenuPopulate()

вот само меню

Выделить код

Код:

<menupopup id="qlinks-links-menu" 
                        onpopupshowing="qlinks_linksMenuPopulate()" />

Проблема в том, что если я при добавлении последнего пункта "Настройки", вместо кода

Выделить код

Код:

newwin_item.setAttribute("label", "Настройки");
        newwin_item.setAttribute("tooltiptext", "Настройки");

хочу написать

Выделить код

Код:

newwin_item.setAttribute("label", "&qlinks.menu.preferences.label;");
        newwin_item.setAttribute("tooltiptext", "&qlinks.menu.preferences.label.tooltip;");

то замена  "&qlinks.menu.preferences.label;" на то, что описанно в .dtd файле не происходит.

Конечно можно сделать пункт "Настройки" статичным, явно прописанным в .xul, и не удалять его при очистки меню перед заполнением его ссылками, но всёже хотелосьбы узнать, почему не работает подмена в таком подходе как у меня.. :)

Отсутствует

 

№203-02-2006 13:38:22

Anton
Участник
 
Группа: Extensions
Откуда: от верблюда
Зарегистрирован: 14-12-2004
Сообщений: 3057
Веб-сайт

Re: Использование ENTITY в javascript

в javascript используются *.properties файлы
во все локали нужно добавить файл, допустим, my_ext.properties
формат его такой

Выделить код

Код:

название_строки=значение строки

а потом загружать эти строки функцией

Выделить код

Код:

function my_ext_getString (name)
{
    var sb;
    try
    {
        var sbs = Components. classes ["@mozilla.org/intl/stringbundle;1"]. getService(); 
        sbs = sbs. QueryInterface (Components. interfaces. nsIStringBundleService);
        
        sb = sbs. createBundle ("chrome://my_ext/locale/my_ext.properties"); 
        return sb. GetStringFromName (name);
    } catch (ex) {}
    return name;
}

Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!

Отсутствует

 

№303-02-2006 13:49:38

d1pr3d
Участник
 
Группа: Members
Зарегистрирован: 03-02-2006
Сообщений: 2

Re: Использование ENTITY в javascript

спасибо, сделал! :)
имхо использовать общий файл для .xul и .js былобы, наверно, удобнее..

Отсутствует

 

Board footer

Powered by PunBB
Modified by Mozilla Russia
Copyright © 2004–2020 Mozilla Russia GitHub mark
Язык отображения форума: [Русский] [English]