我在跨浏览器兼容性和废弃 dom 方面遇到了困难。我在电子商务交易中添加了数据分析跟踪,以便获取每次购买的产品和交易金额。
最初我是document.querySelectorAll('#someId')[0].textContent
用来获取产品名称的,这对于除 Internet Explorer 之外的所有浏览器都可以正常工作。
花了一些时间才弄清楚这.textContent
是导致问题的部分。
昨天我换成.textContent
了.innerText
。从内部分析来看,ie 的问题似乎已经解决,但现在 Firefox 失败了。
我希望在不编写 if 语句来检查.textContent
or的功能的情况下找到解决方案.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);
}
那么使用或使用双杠||
会分配第一个非空值?