我一直在與跨瀏覽器兼容性和報廢dom困難時期。 我已將數據分析跟蹤添加到電子商務交易中,以便獲取每次購買的產品和交易金額。textContent Vs. innerText跨瀏覽器解決方案
最初我使用document.querySelectorAll('#someId')[0].textContent
來獲得產品名稱,並且除了Internet Explorer以外,對於每個瀏覽器都能正常工作。
花了一些時間才發現是造成問題的.textContent
部件。
昨天我將.textContent
更改爲.innerText
。從內部分析看來,這個問題似乎已經解決了,但現在Firefox正在失敗。
我希望找到一個解決方案,而不寫if語句來檢查.textContent
或.innerText
的功能。
是否有跨瀏覽器解決方案.getTheText
?
如果不是最好的解決方法是什麼?有一個簡單的解決方案嗎? (我問給我的腳本編寫的知識和經驗,這是有限的)
**添加以下意見** 如果這是我的代碼塊:
// build products object
var prods = [];
var brand = document.querySelectorAll('.txtStayRoomLocation');
var name = document.querySelectorAll('.txtStayRoomDescription');
var price = document.querySelectorAll('.txtStayRoomSplashPriceAmount');
for(var i = 0; i < brand.length; i++) {
//set granular vars
var prd = {};
//add to prd object
prd.brand = brand[i].innerText;
prd.name = name[i].innerText;
prd.price = price[i].innerText;
prd.quantity = window.session_context_vars.BookingContext.Booking.ReservationLineItems[i].ReservationCharges.length/2;;
//add to prods array
prods.push(prd);
}
然後如果我理解從註釋語法並在註釋鏈接到的問題,這是我應該做的:
// build products object
var prods = [];
var brand = document.querySelectorAll('.txtStayRoomLocation');
var name = document.querySelectorAll('.txtStayRoomDescription');
var price = document.querySelectorAll('.txtStayRoomSplashPriceAmount');
for(var i = 0; i < brand.length; i++) {
//set granular vars
var prd = {};
//add to prd object
prd.brand = brand[i].textContent || brand[i].innerText;
prd.name = name[i].textContent || name[i].innerText;
prd.price = price[i].textContent || price[i].innerText;
prd.quantity = window.session_context_vars.BookingContext.Booking.ReservationLineItems[i].ReservationCharges.length/2;;
//add to prods array
prods.push(prd);
}
因此,使用或用雙條||
分配的第一個非空值?
我通常只是寫'element.textContent || element.innerText'。 –
是不是有一個原因,你不只是使用像jQuery的DOM包裝庫? –
密切相關:[跨瀏覽器innerText設置值](http://stackoverflow.com/q/11646398/1048572) – Bergi