Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   аналог HTMLElement в IE? (https://javascript.ru/forum/events/2398-analog-htmlelement-v-ie.html)

Researcher 20.12.2008 14:16

аналог HTMLElement в IE?
 
Здравствуйте, помогите пожалуйста разобраться в вопросе...
Задача:
определить во всех элементах DOM одинаковый метод.

В Opere и FF можно сделать так:
HTMLElement.prototype.testMethod = function() { alert("test"); }
document.body.testMethod();

В IE так сделать не получается из-за отсутствия в нем определения HTMLElement, более того, если определить метод в Object.prototype, то в этом же браузере его не будет в элементах дерева, в остальных браузерах все нормально...

Вопрос, собственно, заключается в том, есть ли аналог HTMLElement в IE, или, возможно, какой-то другой способ реализации данной задачи кроме непосредственного определения метода в каждом элементе дерева?

Заранее спасибо :)

Octane 20.12.2008 14:28

В IE ниже 8-й версии так сделать нельзя, используйте функцию-обёртку:
function F(node) {
  this.node = node;
}

F.prototype = {
   method: function(…) {
       alert(this.node.tagName);
   },
   method1: …,
   method2: …,
   attr1: …,
   attr2: …
};

var obj = new F(document.getElementById(…));
obj.method(…);

Researcher 21.12.2008 02:45

Ну, в принципе, я так и предполагал, жаль... Ну ладно, будем выкручиваться с тем, что есть, спасибо :)

vladkras 10.04.2011 14:04

behavior в IE
 
даже начиная кажется с IE5 это возможно с помощью behaviors:

через css добавляется свойство
Код:

{bahavior:url(myfile.htc);}
нужным вам элементам

синтаксис myfile.htc:
Код:

<PUBLIC:COMPONENT>
<PUBLIC:ATTACH EVENT="onclick"  ONEVENT="someFunc()" />
<SCRIPT LANGUAGE="JScript">
    function someFunc()
    {
        //код для выполнения
    }
</SCRIPT>
</PUBLIC:COMPONENT>

тут все просто, прикрепляете к нужному событию функцию (PUBLIC:ATTACH может быть несколько)

можно использовать Jscript или VBScript, но я пользовался только первым, поэтому про второй ничего сказать не могу

оригинал статьи на MSDN


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