мой давний подход к снаряду с использованием prototype.js, доработанный для placeholder:
Object.extend(Form.Element.Methods, {
/**
* Set devault value for text input, it will disappear on focusing input
* @param element target input
* @param value given default value
*/
setDefaultValue: function(element, value) {
element = $(element);
value = value || element.readAttribute('placeholder');
if (!value) return;
var setDefault = function() {
if (element.value.empty()) {
element.value = value;
}
}
function empty(){
if (element.value == value) {
element.value = '';
}
}
setDefault();
element.observe('blur', setDefault);
element.observe('focus', empty);
element.form && $(element.form).observe('submit', empty);
return element;
}
);
впрочем, зря вы так категорично «будет запрашиваться с сервера каждый раз». С правильным кешированием они максимум раз в месяц будут качаться. А например у гуглового хостинга популярных библиотек кеширование наверняка правильное. Я именно его собираюсь использовать.
1) почему используется уродливое имя GM_addStyle, а не делается что-то типа var addStyle = window.GM_addStyle || function(css){…}?
2) разве какой-то из этих браузеров ещё не поддерживает querySelectorAll? цикл мог бы быть значительно проще: querySelectorAll('a.tweet-url[href^=http://twitpic.com/]')
прослеживается любопытная аналогия: mozilla централизованно отключает плагин на компьютерах, а amazon централизованно удаляет книжку с читалок; в первом случае все радуются, во втором все негодуют
забавно, в форумах уже двое человек пишут, что у них всё работает
у меня работает частично: если открыть в ифрейме rememberthemilk.com и кликнуть «Signup Now!», то оно откроется в виджете и в опере, а вот ссылка «Login» справа вверху открывается только в опере…
а мне вот наоборот хотелось, чтобы можно было работать со всеми ссылками внутри ифрейма в виджете — так можно было бы делать вполне web-desktop applications, как могут призма и хром
Object.extend(Form.Element.Methods, { /** * Set devault value for text input, it will disappear on focusing input * @param element target input * @param value given default value */ setDefaultValue: function(element, value) { element = $(element); value = value || element.readAttribute('placeholder'); if (!value) return; var setDefault = function() { if (element.value.empty()) { element.value = value; } } function empty(){ if (element.value == value) { element.value = ''; } } setDefault(); element.observe('blur', setDefault); element.observe('focus', empty); element.form && $(element.form).observe('submit', empty); return element; } );input.form.addEventListener('submit', function(){ if (input.value == input.placeholder) input.value = ''; }, true)function onload() { if (window.Prototype && window.init) window.init() }var proto = document.createElement('script'); proto.src = 'http://ajax.googleapis.com/ajax/libs/prototype/1.6.1/prototype.js'; proto.onload = onload(); document.body.appendChild(proto);впрочем, зря вы так категорично «будет запрашиваться с сервера каждый раз». С правильным кешированием они максимум раз в месяц будут качаться. А например у гуглового хостинга популярных библиотек кеширование наверняка правильное. Я именно его собираюсь использовать.
1) почему используется уродливое имя GM_addStyle, а не делается что-то типа var addStyle = window.GM_addStyle || function(css){…}?
2) разве какой-то из этих браузеров ещё не поддерживает querySelectorAll? цикл мог бы быть значительно проще: querySelectorAll('a.tweet-url[href^=http://twitpic.com/]')
но для подчёркивания контраста достаточно двух : )
у меня работает частично: если открыть в ифрейме rememberthemilk.com и кликнуть «Signup Now!», то оно откроется в виджете и в опере, а вот ссылка «Login» справа вверху открывается только в опере…
хотя может у меня что-то неправильно — на форуме оперы мне пишут, что ссылки ифрейма открываются внутри него, а не в браузере: my.opera.com/community/forums/findpost.pl?id=3153122
apt-get build-dep [package name]