索引在IE中导致错误;在其他浏览器中工作
indexOf causing error in IE; working in other browsers
>编辑:我超级困惑。我有一个网页的本地副本,其中我将"indexOf"函数添加到javascript文件中。此页面正在工作。但是,我已将更改推送到的实时站点上的页面仍然收到 indexOf 错误。此外,网站上使用完全相同脚本的另一个页面没有收到任何错误。giftFeatures[giftB]应该没有问题,因为根据调试器,它是一个数组。
这是问题页面的网址
这是一个使用完全相同的脚本且没有错误的页面
这两个页面有什么区别,为什么第二个有效,而第一个不起作用?这让我发疯。
我有一个脚本附加到一个页面,该脚本可在除IE(使用IE11(以外的所有浏览器中运行。这是不起作用的方法:
buildComparisonData: function() {
this.comparisonData = [];
var giftA = this.selectedGifts[0];
var giftB = this.selectedGifts[1];
if(this.selectedGifts.length == 3)
var giftC = this.selectedGifts[2];
for(var i = 0; i < this.config.giftFeatureLabels.length; i++) {
var label = this.config.giftFeatureLabels[i].feature;
var checkimg = '<img src="https://www.giftcalcs.com/sites/all/modules/custom/pgc_giftcompare/check-mark.png">';
var giftBChecked = this.config.giftFeatures[giftB].indexOf(i) < 0 ? '' : checkimg;
var giftAChecked = this.config.giftFeatures[giftA].indexOf(i) < 0 ? '' : checkimg;
if(this.selectedGifts.length == 3)
var giftCChecked = this.config.giftFeatures[giftC].indexOf(i) < 0 ? ' ' : checkimg;
var row = {
label: label,
giftA: giftAChecked,
giftB: giftBChecked
};
if(this.selectedGifts.length == 3)
row.giftC = giftCChecked;
this.comparisonData.push(row);
var comparisonLabels = {};
comparisonLabels.giftA = this.getGiftLabel(this.selectedGifts[0]);
comparisonLabels.giftB = this.getGiftLabel(this.selectedGifts[1]);
if(this.selectedGifts.length == 3)
comparisonLabels.giftC = this.getGiftLabel(this.selectedGifts[2]);
this.comparisonLabels = comparisonLabels;
}
它中断的线是
var giftBChecked = this.config.giftFeatures[giftB].indexOf(i) < 0 ? '' : checkimg;
它说"对象不支持属性或方法'indexOf'
该脚本在Chrome和Firefox中没有错误。我可以在giftFeatures[giftB]上获得indexOf,但在IE中却不能。
当
方法不存在时,您应该定义方法indexOf
:
if (!Array.prototype.indexOf) {
Array.prototype.indexOf = function(obj, start) {
for (var i = (start || 0), j = this.length; i < j; i++) {
if (this[i] === obj) {
return i;
}
}
return -1;
}
}
您还应该检查此问题,该问题有多种解决方案。
相关文章:
- 是什么让一个“;Uncaught RangeError:超过了最大调用堆栈大小“;错误(Chrome,在其他浏览器中显示
- jquery代码在Mozilla中有效,但在其他浏览器上无效
- java脚本在Chrome和其他浏览器中对LocaleTimeString的不同行为
- Javascript的某些部分在Chrome中不起作用,但在其他浏览器中可以完美工作
- 在BoilerplateJS浏览器加载所有脚本(在其他模块中),而不考虑激活的模块
- 防止“;jQuery(html)"防止触发浏览器请求图像和其他参考内容
- 如何隐藏空<span>在IE中使用javascript.(注意,在其他浏览器中工作正常)
- 我的时间倒计时脚本在谷歌浏览器中工作正常,但在其他浏览器中打开时它显示为南楠
- 如何使用javascript从同一浏览器下的其他页面获取URL?有可能吗
- 使用一个Javascript函数提交多个表单可以在FF中工作,而不需要其他浏览器
- 带有Safari的Javascript;不起作用——所有其他浏览器都起作用
- Javascript可以在chrome中使用,但不能在其他浏览器中使用
- 有没有一种方法可以在过滤掉iOS Chrome、Firefox和其他浏览器的同时检测iOS safari
- 在其他浏览器中打开页面时,令牌未保存在$window.sessionStorage中
- 编写脚本以关闭其他选项卡或浏览器
- 无法从IE中的data.responseText获取结果,但在其他浏览器中工作
- 在Firefox中使用锤子捏 错误地定向 - 适用于所有其他浏览器
- 在IE8和其他带有javascript的浏览器中获取正文类的标准解决方案是什么
- 索引在IE中导致错误;在其他浏览器中工作
- 将JSON对象转换为敲除observable在IE8中不起作用,但在所有其他浏览器中都起作用