gpt4 book ai didi

jQuery - IE8 中的对象不支持此属性或方法

转载 作者:行者123 更新时间:2023-12-01 02:21:52 25 4
gpt4 key购买 nike

我在我的一个项目中实现了便签功能,并且发现了与浏览器兼容性相关的问题。我的代码在 IE8 中无法运行,但在其他浏览器中运行良好。

我得到的错误是:

Message: Object doesn't support this property or method
Line: 45
Char: 3
Code: 0
URI: http://dev.mesocial.co/orange_theme/js/sticky_note_func.js

这些是 40 到 50 之间的线:

var moved = function(note) {

// added by rupesh
// alert(JSON.stringify(lastCreatedNoteId));
var passId = note.id
if(lastCreatedNoteIdForJs.indexOf(note.id) != -1)
passId = lastCreatedNoteId[note.id];
// till here ///////
$.post(SITE_URL+'/dashboard/create-sticky-note/act/moved/sticky_note_id/'+passId+'/pos_x/'+note.pos_x+'/pos_y/'+note.pos_y,
function(data) {
//alert(data);
});

任何有关问题所在的帮助将不胜感激。

最佳答案

IE8不支持.indexOf() 。在 Internet Explorer 中,它首先是在 IE9 中引入的。

由于您使用的是 jQuery,因此可以使用 $.inArray()方法代替。

在你的情况下是这样的:

if($.inArray(note.id, lastCreatedNoteIdForJs) != -1)

支持不带 jQuery 的旧版浏览器:

如果您也想在旧版浏览器中使用 .indexOf(),则可以在需要时使用自己的数组原型(prototype)。原型(prototype)看起来像这样:

if (!Array.prototype.indexOf) {
Array.prototype.indexOf = function (searchElement /*, fromIndex */ ) {
"use strict";
if (this == null) {
throw new TypeError();
}
var t = Object(this);
var len = t.length >>> 0;

if (len === 0) {
return -1;
}
var n = 0;
if (arguments.length > 1) {
n = Number(arguments[1]);
if (n != n) { // shortcut for verifying if it's NaN
n = 0;
} else if (n != 0 && n != Infinity && n != -Infinity) {
n = (n > 0 || -1) * Math.floor(Math.abs(n));
}
}
if (n >= len) {
return -1;
}
var k = n >= 0 ? n : Math.max(len - Math.abs(n), 0);
for (; k < len; k++) {
if (k in t && t[k] === searchElement) {
return k;
}
}
return -1;
}
}

以上示例取自 MDN articleArray.prototype.indexOf上。

关于jQuery - IE8 中的对象不支持此属性或方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15158220/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com