Сообщение от Maxman
|
В винде так-же)
|
Помоему тут смысл немного иной.
Сообщение от Maxman
|
Эта функция входит в состав движка селекторов (выборки иными словами), спецсимволы - да, в каком-то смысле защита
|
А можно по подробней, а то мне даже интересно стало
По коду,я заметил несколько нюансов:
1. относительно циклов
2. относительно
indexOf(). Также советую обратить внимание на метод search().
3. относительно
outerHTML. По моему __defineGetter__ очень тормознутый, если есть желание можете проверить, к томуже он если мне не изменяет память работает в FF3+ (хотя кто сейчас FF2 пользуется). Плюс есть одно НО: XMLSerializer() в некоторых реализациях, когда тип документа Strict заместо <span></span> возвращает <span />...!
Но все-таки как вариант альтернативной реализации:
<p id="p">
<span>|</span>
</p>
<script type="text/javascript">
function outerHTML(node){
return node.outerHTML || (
function(i){
var wrap = document.createElement('div'), context;
wrap.appendChild(i.cloneNode(true));
context = wrap.innerHTML;
wrap = null;
return context;
})(node);
}
alert(outerHTML(document.getElementById('p')));
</script>
Смотрим в FF (где-то в лучшем случае добавляется атрибут пространства имен xmlns, а где-то (до FF 3.5 элемент приводится к XML нотации))
<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<head><head>
<body>
<p id="p"></p>
<script type="text/javascript">
(function(node){
return alert(node.outerHTML || new XMLSerializer().serializeToString(node));
}(document.getElementById('p')));
</script>
</body>
4. try/catch по мне так лишнии, точнее их желательно условиями заменить, т.к. они вроде бы прожорливы.
5. обратите
внимание на метод getElementsByClassName().
6. в фунции combinator if-ы лучше заменить на switch, т.к. он быстрей будет