Javascript-форум (https://javascript.ru/forum/)
-   Оффтопик (https://javascript.ru/forum/offtopic/)
-   -   Борьба с Object.defineProperty в IE8 (https://javascript.ru/forum/offtopic/31305-borba-s-object-defineproperty-v-ie8.html)

FINoM 02.09.2012 22:15

Enumerable с сеттером можно реализовать через onpropertychange (придется вставлять элемент в документ), но, как реализовать геттер — задача.

devote 02.09.2012 22:35

Цитата:

Сообщение от FINoM
(придется вставлять элемент в документ)

я вообще удивлен что у тебя аксессоры работают на не вставленном элементе в DOM объект... Ты точно уверен что вставлять его в DOM не надо? потому что насколько я помню, от defineProperty в ИЕ8 мало толку если элемент не вставлен в DOM

FINoM 02.09.2012 22:37

Цитата:

Сообщение от devote
я вообще удивлен что у тебя аксессоры работают на не вставленном элементе в DOM объект... Ты точно уверен что вставлять его в DOM не надо? потому что насколько я помню, от defineProperty в ИЕ8 мало толку если элемент не вставлен в DOM

Работает без вставки в ие9, режиме ие8. Надо еще затестить в настоящем ие8, но, думаю, это не принципиально.

devote 02.09.2012 22:38

Цитата:

Сообщение от FINoM
Надо еще затестить в настоящем ие8, но, думаю, это не принципиально.

вот именно, затести... потому как эмуляция в ИЕ9 это совсем не ИЕ8

FINoM 02.09.2012 22:52

devote, да, ты прав, вставил в боди.

devote 02.09.2012 23:36

Цитата:

Сообщение от FINoM
devote, да, ты прав, вставил в боди.

забей на DOMElement юзай XMLHttpRequest
var s = new XMLHttpRequest;
Object.defineProperty( s, "testProp", {
    set: function( value ) {
        alert( "va: " + value );
    },
    get: function() {
        return "hehe";
    }
});

s.testProp = 1;
alert( s.testProp );
и лишних свойств меньше, их там всего 9 штук лишних.

FINoM 03.09.2012 00:06

Цитата:

Сообщение от devote
забей на DOMElement юзай XMLHttpRequest

Ого, клас, щас попробую.
А заодно еще раз поудалять свойтсва.

devote 03.09.2012 00:08

Цитата:

Сообщение от FINoM
А заодно еще раз поудалять свойтсва.

ну это вряд ли получится, но зато в DOM ничего вставлять не надо и лишних свойств не 50 как у элемента а всего 9 штук

FINoM 03.09.2012 00:59

Жаль onpropertychange не пашет.

FINoM 03.09.2012 01:20

Буду XDomainRequest юзать, он реже используется, поэтому меньше вероятности что-то поломать. Плюс там всего 7 свойств.

Пока что получилось только переопределить эти свойства:
var s = new XDomainRequest;

for( var i in s ) {
	Object.defineProperty( s, i, {get: function() {return undefined}, enumerable: false} );
}

Но они всё равно перечисляются, не зависимо от enumerable:
Журнал: contentType undefined 
Журнал: onerror undefined 
Журнал: timeout undefined 
Журнал: ontimeout undefined 
Журнал: onprogress undefined 
Журнал: responseText undefined 
Журнал: onload undefined


Часовой пояс GMT +3, время: 20:03.