2011-07-14 39 views
3

我在我的常規js中創建了一個名爲startsWith的擴展函數。IE9 this = DispHTMLWindow2在原型函數中

它是這樣的:

String.prototype.startsWith = function (str) { 
if (this.indexOf(str) == 0) { 
    return true; 
} 
return false; 
} 

當IE9運行我得到一個錯誤說:「對象不支持屬性或方法‘的indexOf’」。

在調試器中看起來像是DispHTMLWindow2。

任何幫助?

謝謝。

+1

這IE9對我的作品拍攝。 http://jsfiddle.net/sQt5C/ – Gaurav

+1

你打電話過得怎麼樣?聽起來像它被稱爲一種功能,而不是一種方法。 –

+1

聽起來像你沒有傳入字符串。你可以添加一個構造函數檢查來阻止它跳出if(this.constructor!== String)return – Christian

回答

1

你可以嘗試以下從this site

String.prototype.startsWith = function(str) 
{return (this.match("^"+str)==str)} 

String.prototype.endsWith = function(str) 
{return (this.match(str+"$")==str)} 

String.prototype.trim = function(){return 
(this.replace(/^[\s\xA0]+/, "").replace(/[\s\xA0]+$/, ""))} 
+0

RegExp對'startsWith'和'endsWith'有點矯枉過正。更不用說,如果'str'包含特殊字符,它們都會中斷。 –