eXeLe > 17-07-2009 14:32:20 |
Возникла проблема при попытке разместить на тулбаре динамическую картинку. В XUL файле есть кнопка с допустим id="dinam" В CSS файле прописана картинка для этого id. Так это в статике. А нужно чтоб в записимости от переменной была разная картинка. Но если в js-файле делать getElementById ("dinam");, то врядли мы сможем потом использовать setAttribute ("id", dinam2); (пробовал, не работает). В CSS, думаю, нельзя прикрутить JS файл и использовать типа #dinam { list-style-image: url(НАША_ПЕРЕМЕННАЯ); Как найти выход из данной проблемы? Или можно как то использовать картинку в кнопке без id в label'e? |
Anton > 17-07-2009 15:58:46 |
css-правило можно сделать на любой атрибут. #dinam[attr="state1"] { list-style-image: url(...); } /* без атрибутов */ #dinam[attr="state2"] { list-style-image: url(...); } /* с атрибутом attr */ и потом по ситуации ставить нужное значение атрибуту attr. |
eXeLe > 17-07-2009 16:03:53 |
с этим разобрался |
Anton > 17-07-2009 16:17:01 |
setAttribute ("attr", "state1"); ... setAttribute ("attr", "state2"); |
eXeLe > 17-07-2009 16:59:30 |
а такой вопрос, возможно как нить прикрутить refresh-функцию? картинка просто - png файл генерируемый, и ее содержимое обновляется раз в несколько минут. но в данный момент она грузится один раз и все, пока не переоткроешь браузер, она не обновится. даже если с динамикой выбрать одну картинку, потом вторую и снова первую - первая при этом не обновится, а будет такой, какой она загрузилась в первый раз. не знаю принципов работы CSS - грузит ли он "при запуске" все картинки и потом их использует или просто картинка кешируется и не обновляется... в любом случае хочется обновления картинки по нажатию кнопки где nonepic - атрибут с пустой картинкой, mypicture - переменная, через которую ставится нужный атрибут - наша картинка пытался этим сделать обновление картинки, в случае если переменная mypicture не меняет значения, но само собой не вышло, картинка (точнее все картинки от каждого атрибута) как загрузилась один раз, так и остается. |
Anton > 17-07-2009 17:06:26 |
Вот есть элемент 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.
По-моему - то, что нужно. |
eXeLe > 17-07-2009 17:20:14 |
ну это, как я понял, отдельный элемент, как кнопки и прочее и само по себе без нажатия (активации скрипта) обновляться оно не будет. validate="always" внутри кнопки тоже не проканало или просто использовать данный элемент "внутри" кнопки? щас пойду пробовать вообщем 17-07-2009 17:39:17 сделал через image, но либо не работает, либо в чем то ошибся XUL: JS: где myimage - сгенерированная строка с УРЛом картинки само по себе работает, как и через CSS и даже занимает меньше кода, но вот обновлять не обновлет - показывает один и тот же онлайн. между разными картинками (разные занчения переменной - разные картинки) переключается на ура, но не обновляет при этом. |
Anton > 17-07-2009 18:02:11 |
eXeLe пишетно либо не работает, либо в чем то ошибся
У меня тоже не работает. Скорее всего, chrome xul кэшируется всегда. |
eXeLe > 17-07-2009 18:05:15 |
а нет функций очищения кэша/удаления файла из кэша или например перезаписи файла в кэше? |
Anton > 17-07-2009 19:50:28 |
Если картинка загружается по протоколу http - то есть, но в этом случае, я думаю, должен работать атрибут validate. Если по протоколу file - не знаю. Картинку локального файла при его изменении можно попробовать загружать с помощью протокола data: |
Infocatcher > 17-07-2009 20:00:12 |
Anton пишетЕсли по протоколу file - не знаю. Картинку локального файла при его изменении можно попробовать загружать с помощью протокола data:
Можно прибавлять к ссылке что-то вроде "?" + new Date().getTime() Или Gecko-специфичный Date.now(), выдающий то же самое. Правда, это приведет к мусору в кэше. |
eXeLe > 18-07-2009 11:11:26 |
Infocatcher пишетAnton написал:Если по протоколу file - не знаю. Картинку локального файла при его изменении можно попробовать загружать с помощью протокола data:Можно прибавлять к ссылке что-то вроде"?" + new Date().getTime()Или Gecko-специфичный Date.now(), выдающий то же самое.Правда, это приведет к мусору в кэше.
сделал ссылку на картинку вида url + "?" + new Date().getTime() обновляется успешно, спасибо |