И так пока не вышел.. эта волшебная версия яваскрипта...
после общения с фураксом) я стал задумыватся о всяких DOM моделях итд..
и теперь подробно по Денни Гудману изучаю.. все секреты языка..
и стараюсь их понять.. в 5 издании книги довольно часто упоминаются фразы о будушей новой версии.. как вы думаете.. как лучше сохранить совместимость.. давайте немножко поговорим на эту тему И вообще у ктого каая литература по яваскрпту есть итд..
1. Systemnik - 08 Апреля, 2008 - 04:22:07 - перейти к сообщению
2. Furax - 08 Апреля, 2008 - 05:26:40 - перейти к сообщению
Совместимость ты не сохранишь- заявлено, что обратной совместимости с JS1.5 не будет. Разумеется, многие концепции, такие как DOM2, останутся, но может измениться синтаксис и т. п. В принципе, есть какая-то информация о JS2.0, который Mozillовские продукты вроде даже частично понимают (здесь за последние 4 года ничего не изменилось - как делали тихо, почти что для себя, так и делают), но заморачиваться этим на данном этапе я бы не стал. Речь тогда шла не о совместимости на уровне синтаксиса, а на уровне концепций, понятий, с которыми оперирует язык.
3. Systemnik - 08 Апреля, 2008 - 08:19:22 - перейти к сообщению
Да, ты вполне прав на уровне совместимости проблем думаю не возникнет..
но все такие некоторые неполадочки или недочеты появятся.. вот например..
помниш я писал скрипт который динамически меняет текст в абзаце..
пр помощи innerHTML так вот ты меня наругал И правильно сделал! Ведь лучше (хоть и сложнее) напсать так:
хотя ведь можно напсать проше.. как думаеш.. будет ли подобные отличия в JavaScript 2.0..
но все такие некоторые неполадочки или недочеты появятся.. вот например..
помниш я писал скрипт который динамически меняет текст в абзаце..
пр помощи innerHTML так вот ты меня наругал И правильно сделал! Ведь лучше (хоть и сложнее) напсать так:
CODE:
<html>
<head>
</head>
<body>
<p id="paragraph"></p>
<script>
function ajax()
{
var text=document.createTextNode("Привет!");
document.getElementById("paragraph").appendChild(text);
}
</script>
<a href="#" onClick="ajax()">Напечатать</a>
</body>
</html>
<head>
</head>
<body>
<p id="paragraph"></p>
<script>
function ajax()
{
var text=document.createTextNode("Привет!");
document.getElementById("paragraph").appendChild(text);
}
</script>
<a href="#" onClick="ajax()">Напечатать</a>
</body>
</html>
хотя ведь можно напсать проше.. как думаеш.. будет ли подобные отличия в JavaScript 2.0..
4. KROt - 08 Апреля, 2008 - 09:11:17 - перейти к сообщению
Systemnik, не подскажишь название той книги Гудмана? Интересно было бы взглянуть на неё...
5. Systemnik - 08 Апреля, 2008 - 09:21:20 - перейти к сообщению
JavaScript Библия пользователя Авторы Денни Гудман и Майкл Моррисон
6. KROt - 08 Апреля, 2008 - 09:32:06 - перейти к сообщению
А... Такая у меня есть... Правда 4-е издание... 2003 года
7. Furax - 08 Апреля, 2008 - 09:47:52 - перейти к сообщению
Systemnik
Не знаю. Читай первоисточники - предварительные (!) спецификации господа из Mozilla уже выложили. Просто DOM - это штука куда более высокоуровневая, чем прямая правка HTML, и с моей точки зрения - идеологически более правильная...
Не знаю. Читай первоисточники - предварительные (!) спецификации господа из Mozilla уже выложили. Просто DOM - это штука куда более высокоуровневая, чем прямая правка HTML, и с моей точки зрения - идеологически более правильная...
8. KROt - 08 Апреля, 2008 - 10:18:03 - перейти к сообщению
У DOM есть свои преимущества и недостатки, также, как и у innerHTML.
Преимущества innerHTML:
Нет особой заморочки с созданием текстовых и прочих элементов в DOM-модели документа.
Недостаток innerHTML:
Все обработчики событий самоуничтожаются при записи данных через innerHTML.
Преимущества appendChild:
Сохранение всех обработчиков событий, меньше конфликтов с разными браузерами.
Главный недостаток:
Нельзя просто взять кусок html-кода, например
и вставить его в другой блок через appendChild. Придётся писать что-то типа
А что если мне нужно вставлять теги не одного уровня вложности, а нескольких? Придётся писать функцию разбора строки на элементы, разбора этих элементов на составляющие, типа названия тега и пр...
Так где же она, золотая середина?
Преимущества innerHTML:
Нет особой заморочки с созданием текстовых и прочих элементов в DOM-модели документа.
Недостаток innerHTML:
Все обработчики событий самоуничтожаются при записи данных через innerHTML.
Преимущества appendChild:
Сохранение всех обработчиков событий, меньше конфликтов с разными браузерами.
Главный недостаток:
Нельзя просто взять кусок html-кода, например
CODE:
var txt = "<div id='objid'>Бла-бла-бла</div>"
и вставить его в другой блок через appendChild. Придётся писать что-то типа
CODE:
var bl = document.createElement("div");
bl.id = "objid";
document.getElementById("anotherid").appendChild(bl);
var bl = document.createElement("div");
bl.id = "objid";
document.getElementById("anotherid").appendChild(bl);
А что если мне нужно вставлять теги не одного уровня вложности, а нескольких? Придётся писать функцию разбора строки на элементы, разбора этих элементов на составляющие, типа названия тега и пр...
Так где же она, золотая середина?
9. Furax - 08 Апреля, 2008 - 20:39:45 - перейти к сообщению
KROt
А золотая середина в том, что в Web 2.0 уже нет никакой необходимости делать теги по пять раз вложенными. CSS всё сделает за Тебя.
Кстати, это никак не DOM2:
И потом, задача конкретно JavaScriptа - это ну никак не генерация страницы с нуля (разве что небольшая модификация), но расцвечивание, проверка данных и т. д.
А вертеть на JS HTML-парсер - ИМХО верх маразма.
А золотая середина в том, что в Web 2.0 уже нет никакой необходимости делать теги по пять раз вложенными. CSS всё сделает за Тебя.
Кстати, это никак не DOM2:
CODE:
Лучше использовать setAttribute.bl.id = "objid";
И потом, задача конкретно JavaScriptа - это ну никак не генерация страницы с нуля (разве что небольшая модификация), но расцвечивание, проверка данных и т. д.
А вертеть на JS HTML-парсер - ИМХО верх маразма.
10. KROt - 09 Апреля, 2008 - 06:35:19 - перейти к сообщению
Почему сразу маразм? Очень часто бывает необходимым поменять немаленькие объёмы страницы, например через Ajax.