Цитата:
|
хотя не, в опере у меня не пашет твой вариант, в 12-й не тестил, у меня щас 11.64... но зато в опере есть дескрипторы сеттер/геттер, тоесть с ней вообще все проще.
|
http://help.dottoro.com/ljrmcldi.php ← тут пишут, что работает везде, кроме оперы.
|
для оперы этот вариант канает:
<div id="lala"></div>
<script>
var div = document.getElementById( 'lala' );
var descriptor = Object.getOwnPropertyDescriptor( div, 'innerHTML' );
var oldSetter = descriptor.set;
descriptor.set = function( value ) {
alert( "Попытка назначить: " + value );
oldSetter.apply( this, arguments );
}
Object.defineProperty( div, "innerHTML", descriptor );
div.innerHTML = "<b>test</b> <i>italic</i>";
alert( div.innerHTML );
</script>
|
Цитата:
|
ты просто проверяй присутствие дескриптора сеттер, если есть юзай defineProperty, в противном случае событие что ты показал.. и т.д.
|
FINoM,
а ты видел че пишет w3c? http://www.w3.org/TR/DOM-Level-3-Eve...ubtreeModified Цитата:
|
В жопу W3C :D
|
Цитата:
|
Вот, написал код, работает в IE, Firefox, Opera, но не в Chrome.
<!DOCTYPE html>
<html><head>
<title></title>
</head><body>
<p>asd</p>
<script type="text/javascript">
//основной код
var desc={
get: function () {
delete this.innerHTML;
var res=this.innerHTML;
Object.defineProperty(this, "innerHTML", desc);
return res;
},
set: function (value) {
this.oninnerHTML(value);
delete this.innerHTML;
this.innerHTML=value;
Object.defineProperty(this, "innerHTML", desc);
},
configurable: true
};
function setInnerHTMLHandler(element) {
Object.defineProperty(element, "innerHTML", desc);
}
//конец основного кода
var p=document.getElementsByTagName("p")[0];
setInnerHTMLHandler(p);
p.oninnerHTML=function (text) {
alert(text);
}
p.innerHTML="123";
</script>
</body></html>
|
| Часовой пояс GMT +3, время: 08:23. |