-1

我有一個用Cold Fusion編寫的表單。當我在IE8或Firefox中測試表單時,我沒有任何問題。當我測試在IE10的形式,它提供了以下錯誤:在IE10中替換錯誤,但不在IE8或Firefox中替換錯誤

網頁錯誤的詳細信息

User Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/6.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; InfoPath.2; .NET4.0E) Timestamp: Wed, 8 May 2013 18:15:47 UTC

Message: Object doesn't support property or method 'replace'
Line: 7
Char: 10560
Code: 0
URI: http://www.mysite.com/CFIDE/scripts/ajax/ext/adapter/yui/ext-yui-adapter.js

當我看到在js文件周圍字符10560的代碼,它顯示

{return this.replace(a,"")} 

這是怎麼發生的? IE10越野車是? (不,這不是一個修辭問題。)

+0

這可能是因爲'this'不是'String'的一個實例。我們無法從一行代碼中獲知更多信息。此外,你打開兼容模式,所以IE10的行爲就像IE7。 – duri 2013-05-08 19:02:39

+1

根據[MSDN](http://msdn.microsoft.com/en-us/library/ie/t0kbytzc(v = vs.94).aspx)string.replace應該在IE10中正常工作,並且它將是一個大驚喜,如果它沒有,所以'這'可能不是一個字符串? – adeneo 2013-05-08 19:02:51

+0

你可以在jsfiddle上提供完整的.js或測試用例的url嗎?看來你在IE7模式下使用IE10(在用戶代理上聲明MSIE 7.0)。 – RaphaelDDL 2013-05-08 19:03:13

回答

0

this不是一個字符串。

,以確保它會工作,你可以改變從

this.replace(a,"") 

this.toString().replace(a,"")` 

或在var使用.toString()時,它仍然在你的控制,這樣你就不需要實際上改變YUI .js(糟糕的,因爲如果你有一天需要更新它,你可能會忘記並再次遇到問題)。

順便說一句,如果a不是一個字符串,它已經轉換爲字符串,所以不用擔心它。

看到這個: http://jsfiddle.net/3Cd4d/(看看開發工具控制檯)

+0

這並不回答爲什麼它在IE10(IE7)中輸入相同而不在IE8和Firefox中失敗。 – Richard 2013-05-08 19:12:36

+0

@Richard隨着你提供的信息,這工作。如果你想得到更好的幫助,請給我們一個測試用例。這可能是因爲你在IE7怪癖(錯誤的DOCTYPE)或任何其他難以理解的原因,我們無法預見沒有測試用例。 – RaphaelDDL 2013-05-08 19:14:58

+0

<!DOCTYPE html> - 爲什麼會造成問題?我的頁面是用Cold Fusion編寫的。我將如何在jsfiddle中提供測試用例? – Richard 2013-05-08 19:17:59

0

確定。這是造成它的原因。

我有一個SELECT與多個指定。

在我的驗證功能,我正在修剪這個領域的價值。顯然,IE10/IE7不喜歡這個。

非常感謝大家的幫助,並感謝那些建議我沒有通過字符串的人。

+0

這就是爲什麼我說讓我們成爲一個測試用例。我們從來沒有用JS的這一行來猜測它:/ – RaphaelDDL 2013-05-08 19:30:21