«Опасаясь возможной утраты товарного знака, Google не одобряет использование глагола google, особенно когда подразумевается поиск в Интернете вообще»
ru.wikipedia.org/wiki/Google_(глагол)
Вот-вот. Так же поиск по названиям игр (к примеру Arma). 10 страниц пролистал, и все скрины из одной игрушки. Сложно поверить что у нее такая уникальная палитра (а больше ничего общего в изображениях и нет).
Кстати, я как то в порядке эксперимента пробовал устанавливать временные styleSheets для поиска по css-селектору, в лоб это работало очень медленно, но может это будет хорошим способом узнать актуальность выборки из кэша:
(function (){
var css = CSS.add(), // закроссбраузенный элемент коллекции document.styleSheets
defaultView = document.defaultView;
var isActualNodeBySelector = function (selectorFromCache, nodeFromCache) {
css.insertRule('*{cursor:default}', 0);
css.insertRule(selectorFromCache + '{cursor:crosshair}', 0);
if (( defaultView ?
defaultView.getComputedStyle(nodeFromCache, null) :
node.currentStyle
)['cursor'] == 'crosshair'
) {
// .......... выборка из кэша актуальна
}
css.deleteRule(0);
css.deleteRule(1);
}
})()
Раз уж вы «такты» считаете, можно убрать регулярку для ие в поиске по имениКласса.
то есть заменить вот это:
klass = new RegExp('(^| +)' + klass + '($| +)');
var nodes = root.getElementsByTagName('*'),
i = 0,
node;
while (node = nodes[i++]) {
if (klass.test(node.className)) {
sets[idx++] = node;
}
}
вот на такое:
klass = ' ' + klass + ' ';
var nodes = root.getElementsByTagName('*'),
i = 0,
node;
while (node = nodes[i++]) {
if ((' ' + node.className + ' ').indexOf(klass)) {
sets[idx++] = node;
}
}
======
В ходе работы появилась ситуация, которая требует динамического создания canvas’а. К сожалению, что-то типа document.createElement(‘canvas’); отказывалось работать в IE. И при вызове функции getContent, происходила ошибка.
======
Если скрипт, о котором идет речь, это excanvas.js от товарищей Emil A Eklund, Erik Arvidsson, Glen Murphy, то все что нужно сделать чтобы динамически созданные canvas заработали — это выполнить инициализацию: G_vmlCanvasManager.initElement
напирмер так:
=========
var cnv = document.createElement('canvas')
document.getElementById('container').appendChild(cnv)
G_vmlCanvasManager.initElement(cnv)
=========
обязательно воткните свежесозданный нод canvas в дерево — для работы initElement нужен родитель элемента.
Убивают отдельные идеи отдавать аяксом сверстанный html в веб-приложении. К примеру клиент просит сервер удалить файл, какой html должен вернуть сервер? Такой:
<b>Да, я его удалил!</b>
А в случае неудачи такой:?
<b>этот гребаный файл не удаляется, потому что он занят другим приложением!</b>
А клиент, допустим, в зависимости от полученного ответа должен поступать по разному, и теперь чтобы понять был ли выполнен запрос ему надо распарсить этот html!
Или к примеру файловый менеджер, сервер отдает ему список файлов в виде таблицы со стоблцами «имя», «размер», «аттрибуты», и т.д. И теперь чтобы сделать нормальный кастомайзинг представления надо опять парсить html!
Имо, главная проблема в том что не указан тип который должна возвращать функа. Модные языки расхолащивают разрабов в этом отношении, и ползут баги. Функа непонятно что делает — если она проверяет является ли вход страной — должна возвращать Boolean, если индекс страны — Number, и конкретно -1 в failed случае.
@lahmatiy
"Но это проще к сожалению не будет работать в IE (не понимает он отрицательных значений для substr)"
Для slice понимает. замените на slice и используйте тотже код, мне очень нравится этот прием форматирования чисел ))
ctx.__defineSetter__(«s», function (arg) { this.fillStyle = arg })
ctx.s = 'green';
ctx.f(5, 5, 25, 25);
К сожалению, «Опера» (ещё с версии 3.5) отправляет, в этом случае, запрос в формате «multipart/mixed», который PHP не понимает.
ru.wikipedia.org/wiki/Google_(глагол)
(function (){
var css = CSS.add(), // закроссбраузенный элемент коллекции document.styleSheets
defaultView = document.defaultView;
var isActualNodeBySelector = function (selectorFromCache, nodeFromCache) {
css.insertRule('*{cursor:default}', 0);
css.insertRule(selectorFromCache + '{cursor:crosshair}', 0);
if (( defaultView ?
defaultView.getComputedStyle(nodeFromCache, null) :
node.currentStyle
)['cursor'] == 'crosshair'
) {
// .......... выборка из кэша актуальна
}
css.deleteRule(0);
css.deleteRule(1);
}
})()
то есть заменить вот это:
klass = new RegExp('(^| +)' + klass + '($| +)');
var nodes = root.getElementsByTagName('*'),
i = 0,
node;
while (node = nodes[i++]) {
if (klass.test(node.className)) {
sets[idx++] = node;
}
}
вот на такое:
klass = ' ' + klass + ' ';
var nodes = root.getElementsByTagName('*'),
i = 0,
node;
while (node = nodes[i++]) {
if ((' ' + node.className + ' ').indexOf(klass)) {
sets[idx++] = node;
}
}
смешно все это ))
В ходе работы появилась ситуация, которая требует динамического создания canvas’а. К сожалению, что-то типа document.createElement(‘canvas’); отказывалось работать в IE. И при вызове функции getContent, происходила ошибка.
======
Если скрипт, о котором идет речь, это excanvas.js от товарищей Emil A Eklund, Erik Arvidsson, Glen Murphy, то все что нужно сделать чтобы динамически созданные canvas заработали — это выполнить инициализацию: G_vmlCanvasManager.initElement
напирмер так:
=========
var cnv = document.createElement('canvas')
document.getElementById('container').appendChild(cnv)
G_vmlCanvasManager.initElement(cnv)
=========
обязательно воткните свежесозданный нод canvas в дерево — для работы initElement нужен родитель элемента.
>> отказаться от packed версии, которая, хоть и весит меньше,
>> но жутко тормозит…
jquery-1.3-release.zip включает:
jquery.js
jquery.lite.js
jquery.min.js
jquery.pack.js
[7, «13», «5», 6].sort()
)
<b>Да, я его удалил!</b>
А в случае неудачи такой:?
<b>этот гребаный файл не удаляется, потому что он занят другим приложением!</b>
А клиент, допустим, в зависимости от полученного ответа должен поступать по разному, и теперь чтобы понять был ли выполнен запрос ему надо распарсить этот html!
Или к примеру файловый менеджер, сервер отдает ему список файлов в виде таблицы со стоблцами «имя», «размер», «аттрибуты», и т.д. И теперь чтобы сделать нормальный кастомайзинг представления надо опять парсить html!
header('Content-type: text/javascript; charset: UTF-8');
заметить на
header('Content-Type: text/javascript; charset=UTF-8');
// кавычки заменил на одинарные, над двойными хабр надругался.
// rfc 2068 (14.18 Content-Type)
спасибо за статью ))
use strict;
{
my @formMatrix = (2, 0, 1, 1, 1, 2, 2, 2, 2, 2);
sub xform { @_[$formMatrix[(shift)%10]] }
}
for my $num (0… 123) { printf "$num %s\n", xform ($num, «яблоко», «яблока», «яблок») }
"Но это проще к сожалению не будет работать в IE (не понимает он отрицательных значений для substr)"
Для slice понимает. замените на slice и используйте тотже код, мне очень нравится этот прием форматирования чисел ))
[
('0'+dt.getDate()).slice(-2),
('0'+(dt.getMonth()+1)).slice(-2),
dt.getFullYear()
].join('.')
body{
/*
Устраняет дрожание псевдо-fixed (через top:expression) блоков в IE
(c) Воронежский, (c) Васильчиков
http://www.artlebedev.ru/tools/technogrette/html/fixed_in_msie/
*/
_background:url('_') no-repeat fixed;
}
#fix {
position:fixed;
_position:absolute; /* IE псевдо-fixed хак */
_top:expression( (document).body.scrollTop + 10 );
}