Показать сообщение отдельно
  #21 (permalink)  
Старый 06.01.2011, 00:43
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

Сообщение от 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, т.к. он быстрей будет

Последний раз редактировалось monolithed, 06.01.2011 в 11:34.
Ответить с цитированием