MozTW 討論區
https://forum.moztw.org/

IE 上從 prototype 新增函式的方法?
https://forum.moztw.org/viewtopic.php?f=13&t=20967
1 頁 (共 1 頁)

發表人:  GlinX [ 2007-11-17, 00:44 ]
文章主題 :  IE 上從 prototype 新增函式的方法?

在 Firefox 上 (或者說遵守標準的瀏覽器)

要擴充原本 JavaScript 非核心物件的函式

可以像以下的例子這樣做:

代碼:
HTMLFormElement.prototype.newFunc=function(){
.....
};

document.forms[0].newFunc();


但是在 IE 上就會出錯 (/‵Д′)/~ ╧╧

說什麼 HTMLFormElement 未定義...

試了一下,連 Event 跟 Window 這些物件都未定義...(靠么~那平常怎麼用的?)

請問有人知道怎麼樣在 IE6 上做出同樣的功能嗎?

感謝 m(_ _)m

發表人:  kourge [ 2007-11-17, 14:34 ]
文章主題 : 

IE 並不提供 DOM 物件的 prototype。
像 Prototype.js 和 jQuery 之所以可以提供這種 method addon 是因為那些 DOM 物件都是他們的函式傳回來的,而他們在傳回來之前會直接把 method 設定和加上去,而不是用 prototype。這在 IE 好像叫做 expando。

比如說:
var x = document.forms[0];
x.newFunc = function() {
// ...
};

發表人:  GlinX [ 2007-11-17, 15:10 ]
文章主題 : 

kourge 寫:
IE 並不提供 DOM 物件的 prototype。
像 Prototype.js 和 jQuery 之所以可以提供這種 method addon 是因為那些 DOM 物件都是他們的函式傳回來的,而他們在傳回來之前會直接把 method 設定和加上去,而不是用 prototype。這在 IE 好像叫做 expando。

比如說:
var x = document.forms[0];
x.newFunc = function() {
// ...
};


感謝回應^^

這有點像 Prototype 裡的 Object.extend 方法...



唉...本來就討厭 IE 了

網頁應用寫久後更是覺得 IE 怎麼不快點去死一死...

不遵守標準+特立獨行+更新超慢

發表人:  kourge [ 2007-11-18, 01:11 ]
文章主題 : 

GlinX 寫:
kourge 寫:
IE 並不提供 DOM 物件的 prototype。
像 Prototype.js 和 jQuery 之所以可以提供這種 method addon 是因為那些 DOM 物件都是他們的函式傳回來的,而他們在傳回來之前會直接把 method 設定和加上去,而不是用 prototype。這在 IE 好像叫做 expando。

比如說:
var x = document.forms[0];
x.newFunc = function() {
// ...
};


感謝回應^^

這有點像 Prototype 裡的 Object.extend 方法...

Prototype 內部做 expando 就正是利用 Object.extend 的...

1 頁 (共 1 頁) 所有顯示的時間為 UTC + 8 小時
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/