Дебагинг в Operе> Подскажите как работать со слоями в Opere,
На самом деле Опера - не такая уж и хорошая, как говорят. И то, что getElementById(*) возвращает True, или то, что "маскируется" под другие браузеры, или даже заявления, что у нее полная поддержка DOM, еще не делают ее на одном уровне с MSIE4+, NN6 и даже NN4!
Для того, чтобы не возникали вопросы, как выяснять что в Опере работает, а что - нет, я только что поставил себе ее Windows-версию (раньше мне хватало только TechPreview для Мака).
Первое, что я сделал, было то, что набрал в адресной строке комманду "javascript:asd()". Это просто функция, которая точно небыло на странице. В результате - тишина! Никаких ошибок, никаких алертов, никаких иконок в нижнем левом углу... даже "javascript:" не вызвал консоль.
Итак. Правило первое, при дебагинге скриптов: если браузер не показывает ошибки, никто не сможет их исправить!
В Опере, по умолчанию они выключены... но их можно включить (найти их было нелегко ;-): File -> Preferences -> Plugins и там внизу слева есть чекбокс "Report JavaScript Errors".
Как только включили показ ошибок, то сразу в скрипте видно, что в Опере нет функции .hasChildNodes() не только для элементов, но и для всего документа!
Скрипт к сожалению в Опере работать не будет :-(
> сделал вот так: > function layerWrite(txt) { > if(dom){ > document.getElementById("n1").style.left=(innerWidth-380)/2 > var range = document.createRange(); > el = document.getElementById("n1"); > while(el.hasChildNodes()) > el.removeChild(el.lastChild); > range.selectNodeContents(el); > el.appendChild(range.createContextualFragment(txt)) > } > ...... > В nn4,ie4-5,nn6 работает, а в opera нет. > В чем может быть проблема???
Насколько я смог выяснить, когда делал менюшки для samsung.ru, даже innerHTML не понимает... поэтому, хочу сказать только одно - ДА НУ ЕЕ.. |