Страницы: 1
Возникла проблема при попытке разместить на тулбаре динамическую картинку.
В XUL файле есть кнопка с допустим id="dinam"
В CSS файле прописана картинка для этого id.
Так это в статике.
А нужно чтоб в записимости от переменной была разная картинка.
Но если в js-файле делать getElementById ("dinam");, то врядли мы сможем потом использовать setAttribute ("id", dinam2); (пробовал, не работает).
В CSS, думаю, нельзя прикрутить JS файл и использовать типа
#dinam {
list-style-image: url(НАША_ПЕРЕМЕННАЯ);
Как найти выход из данной проблемы?
Или можно как то использовать картинку в кнопке без id в label'e?
Отсутствует
css-правило можно сделать на любой атрибут.
#dinam[attr="state1"] { list-style-image: url(...); } /* без атрибутов */
#dinam[attr="state2"] { list-style-image: url(...); } /* с атрибутом attr */
и потом по ситуации ставить нужное значение атрибуту attr.
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
а такой вопрос, возможно как нить прикрутить refresh-функцию?
картинка просто - png файл генерируемый, и ее содержимое обновляется раз в несколько минут.
но в данный момент она грузится один раз и все, пока не переоткроешь браузер, она не обновится.
даже если с динамикой выбрать одну картинку, потом вторую и снова первую - первая при этом не обновится, а будет такой, какой она загрузилась в первый раз.
не знаю принципов работы CSS - грузит ли он "при запуске" все картинки и потом их использует или просто картинка кешируется и не обновляется... в любом случае хочется обновления картинки по нажатию кнопки
где nonepic - атрибут с пустой картинкой, mypicture - переменная, через которую ставится нужный атрибут - наша картинка
пытался этим сделать обновление картинки, в случае если переменная mypicture не меняет значения, но само собой не вышло, картинка (точнее все картинки от каждого атрибута) как загрузилась один раз, так и остается.
Отсутствует
Вот есть элемент image: https://developer.mozilla.org/en/XUL/image#a-validate
У него - атрибут validate
validate
Type: one of the values below
This attribute indicates whether to load the image from the cache or not. This would be useful if the images are stored remotely or you plan on swapping the image frequently. The following values are accepted, or leave out the attribute entirely for default handling:* always: The image is always checked to see whether it should be reloaded.
* never: The image will be loaded from the cache if possible.
По-моему - то, что нужно.
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
ну это, как я понял, отдельный элемент, как кнопки и прочее и само по себе без нажатия (активации скрипта) обновляться оно не будет. validate="always" внутри кнопки тоже не проканало
или просто использовать данный элемент "внутри" кнопки?
щас пойду пробовать вообщем
Добавлено 17-07-2009 17:39:17
сделал через image, но либо не работает, либо в чем то ошибся
XUL:
<toolbarbutton id="OnLineButton" tooltiptext="" label="" oncommand="OnLineScript()"> <image id="onlinel2on" src="" validate="always" /> </toolbarbutton>
JS:
var lbl2 = document. getElementById ("onlinel2on"); lbl2. setAttribute ("src", myimage);
где myimage - сгенерированная строка с УРЛом картинки
само по себе работает, как и через CSS и даже занимает меньше кода, но вот обновлять не обновлет - показывает один и тот же онлайн. между разными картинками (разные занчения переменной - разные картинки) переключается на ура, но не обновляет при этом.
Отредактировано eXeLe (17-07-2009 17:24:03)
Отсутствует
но либо не работает, либо в чем то ошибся
У меня тоже не работает. Скорее всего, chrome xul кэшируется всегда.
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
Если картинка загружается по протоколу http - то есть, но в этом случае, я думаю, должен работать атрибут validate.
Если по протоколу file - не знаю. Картинку локального файла при его изменении можно попробовать загружать с помощью протокола data:
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
Если по протоколу file - не знаю. Картинку локального файла при его изменении можно попробовать загружать с помощью протокола data:
Можно прибавлять к ссылке что-то вроде
"?" + new Date().getTime()
Или Gecko-специфичный Date.now(), выдающий то же самое.
Правда, это приведет к мусору в кэше.
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Anton написал:Если по протоколу file - не знаю. Картинку локального файла при его изменении можно попробовать загружать с помощью протокола data:Можно прибавлять к ссылке что-то вроде"?" + new Date().getTime()Или Gecko-специфичный Date.now(), выдающий то же самое.Правда, это приведет к мусору в кэше.
сделал ссылку на картинку вида url + "?" + new Date().getTime()
обновляется успешно, спасибо
Отредактировано eXeLe (18-07-2009 11:25:22)
Отсутствует
Страницы: 1