[JS, IE] Как навесить метод на html-объект?
если я правильно тебя понял, в jQuery это как-то делается, стоит там посмотреть.
Ну навешивать громоздкие чужие либы, которые в итоге наверняка через то же
руками проходить по всем элементам и навешивать на каждый из них этот метод; а потом городить костыли, чтобы он появлялся у свежесозданных объектовработают - совсем не хочется.
ну, типа есть делегированная обработка событий (то, что происходит в jQuery.fn.live и livequery похоже, не происходит, но, все равно, есть).
но вообще, ты же про другое спрашиваешь, хотя тебе тоже можно ввести систему событий, которые ты будешь дергать по необходимости.
может, это даже улучшит код в конкретном случае.
если так, то погугли nwevents. сам не юзал, но по, описанию, довольно легкая и чисто сделанная штука
но вообще, ты же про другое спрашиваешь, хотя тебе тоже можно ввести систему событий, которые ты будешь дергать по необходимости.
может, это даже улучшит код в конкретном случае.
если так, то погугли nwevents. сам не юзал, но по, описанию, довольно легкая и чисто сделанная штука
Говорят, реализация DOM в IE не разрешает JS доступ к прототипу HTMLElement/Node.
http://www.codingforums.com/showthread.php?t=70378
В FF такое работает на ура:
http://www.codingforums.com/showthread.php?t=70378
В FF такое работает на ура:
<html>
<head>
<title>Test DOM</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
</head>
<body>
<script language="JavaScript" type="text/javascript">
<!--
var el;
if (typeof(HTMLElement) != 'undefined' && typeof(HTMLElement.prototype) != 'undefined')
{
HTMLElement.prototype.doSmth = function { alert("Here"); };
el = document.createElement("p");
el.onclick = function { this.doSmth; };
el.appendChild(document.createTextNode(text;
document.body.appendChild(el);
}
// -->
</script>
</body>
</html>
Оставить комментарий
kruzer25
Если тупо создать новый метод через Object.prototype - он не появится у html-ных объектов (у тех, которые в document.all хотя нормально работает у всех остальных объектов. typeof(document.all[0]) - object, так что непонятно, в чём может быть дело. В гугле ничего по теме найти не смог.Как добавить метод doSomething ко всем объектам так, чтобы работало, к примеру, document.all[0].doSomething ? Конечно, без того, чтобы руками проходить по всем элементам и навешивать на каждый из них этот метод; а потом городить костыли, чтобы он появлялся у свежесозданных объектов (тогда уж легче глобальную функцию сделать).