0
我們有一個包含類似的代碼這一串編碼IE9在我們的局域網形式:的JavaScript原型屬性鏡子他人財產
var dept = req.responseXML.selectNodes("//Dept")[0].text;
我們剛剛升級我們所有的電腦到IE10和的selectNodes的是現在已經過時和已換上querySelectorAll,這樣的代碼修正位將是:
var dept = req.responseXML.querySelectorAll("Dept")[0].textContent;
所有這些形式使用共享的JS文件將請求發送出來,所以我想如果我可以定義一些原型功能/性能我能解決這個不觸及任何形式的不兼容性。我取得了一些進展,用能的selectNodes映射到querySelectorAll:
Document.prototype.selectNodes = function(param) {
return this.querySelectorAll(param.replace("//", ""));
}
但是我現在遇到了問題映射文字的textContent。以下似乎不工作:
Element.prototype.text = function() {
return this.textContent;
};
如果任何人有任何書於我將不勝感激,我真的不希望跟蹤所有這些形式了。謝謝!
這是解決方案!您的建議是正確的,但是我的環境要求舊IE9代碼仍能在IE10中運行。 –
@JaredFeldman - 處理舊版瀏覽器兼容性的更好方法是將代碼更改爲使用更新的界面(在較新的瀏覽器中工作),然後爲舊版瀏覽器添加填充。這將使您的代碼保持標準,防止未來發生衝突,因爲您只在代碼中使用標準屬性,並使代碼更易於理解將來出現的用戶(因爲它使用已知標準)。你正在做的是相反的 - 編碼到一箇舊的專有接口,並試圖使新的瀏覽器仍然實現。 – jfriend00