场景:
js中判断一个string是否在一个js的数组中。
方法:
代码如下 |
复制代码 |
if (['a', 'b', 'c'].indexOf(str) >= 0) { //do something }
|
判断选择的文件的扩展名是否在指定的数组中:
代码如下 |
复制代码 |
var position = selectedFilePath.lastIndexOf("."); if(position<=0){ alert("不允许上传这种扩展名的文件!"); return; } else{ var ext = selectedFilePath.substr(position); ext = ext.toLowerCase(); var extArr = [".jpg",".png",".gif", ".jpeg"]; if(extArr.indexOf(ext) == -1){ alert("不允许上传这种扩展名的文件!"); return; } }
|
问题:ie9以下的版本不支持 [].indexOf()
解决方案
针对ie8及以下版本,自己创建indexOf函数。
ie8.js :
代码如下 |
复制代码 |
if (!Array.prototype.indexOf) { Array.prototype.indexOf = function(elt /*, from*/) { var len = this.length >>> 0;
var from = Number(arguments[1]) || 0; from = (from < 0) ? Math.ceil(from) : Math.floor(from); if (from < 0) from += len;
for (; from < len; from++) { if (from in this && this[from] === elt) return from; } return -1; }; }
|
然后在相关页面中引入ie8.js
代码如下 |
复制代码 |
<!--[if lt IE 9]> <script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script> <script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script> <script src="./assets/js/ie8.js"></script> <![endif]-->
|
分享到:
相关推荐
在Firefox 3.5(支持JavaScript 1.8)中,由于内置了`Array.prototype.indexOf`,所以不会输出这个自定义方法,而在只支持JavaScript 1.3的IE8中,`indexOf`被认为是用户定义的属性。 为了解决这个问题,可以利用...
在讨论如何解决遍历时Array.indexOf产生性能问题之前,先需要了解Array.indexOf方法的工作原理及其在JavaScript中的重要性。Array.indexOf是JavaScript数组对象的一个方法,用于确定某个特定元素在数组中的位置,...
"array.js:使ie8等浏览兼容array最新方法"这个标题暗示了我们正在寻找一种方法,让老版本的IE浏览器能够支持那些在ES5中引入的新颖的Array函数。这些方法包括`forEach`, `map`, `filter`, `reduce`, `every`, `some`...
在JavaScript的世界里,`Array.prototype.indexOf` 是一个非常基础且常用的方法,它允许开发者查找数组中是否存在特定元素,并返回该元素的索引位置。然而,IE8及更早版本的Internet Explorer浏览器并不原生支持这个...
`indexOf()`方法是在ECMAScript 5中引入的,因此,在较老的浏览器如IE8及以下版本中可能不支持此方法。为了确保代码的兼容性,可以通过扩展数组原型的方式手动实现`indexOf()`方法。 **示例**: ```javascript if ...
为了解决IE8不支持indexOf的问题,可以通过编写一个兼容性的polyfill脚本来模拟indexOf()方法的功能。该polyfill通过扩展Array.prototype来添加indexOf方法,这样即使在不支持该方法的浏览器中,也可以调用indexOf()...
- IE6-8没有提供`Array.prototype.indexOf`,可以自定义函数实现。 2. **自定义属性获取** - IE允许在DOM元素上直接添加非标准属性,如`element.selfAttr`,而Firefox则需要通过`element.getAttribute('selfAttr'...
首先,我们需要理解IE8不支持的一些现代JavaScript特性,例如`Array.prototype.indexOf()`方法。这个方法用于在一个数组中查找指定元素的索引,如果找不到则返回-1。在IE8及更早版本中,这个方法是缺失的,因此我们...
13.3 Execution of JavaScript Programs 317 13.4 Compatibility and Interoperability 325 13.5 Accessibility 332 13.6 Security 332 13.7 Client-Side Frameworks 338 14. The Window Object . . . . . . . . . ....
10. **其他改进**:还包括`Array.prototype.indexOf` 和 `Array.prototype.lastIndexOf`,`String.prototype.trim` 等字符串和数组操作的改进。 **使用es5-shim.js** 要使用`es5-shim.js`,只需在旧版浏览器中引入...
然而,这个方法在一些较旧的浏览器版本,尤其是IE8及以下版本中并不被支持,这就会导致"对象不支持indexOf属性或方法"的错误。为了解决这个问题,我们可以采用一些兼容性处理策略,例如使用jQuery库中的`$.inArray`...
var currentFocusIndex = Array.prototype.indexOf.call(document.querySelectorAll(focusableElements), document.activeElement); var nextFocusableElement = document.querySelectorAll(focusableElements)[...
在一些老版本的浏览器中,如IE8及更早版本,不支持这个特性,因此开发者需要使用polyfill(填充物)来实现这个功能。`Array.prototype.forEach` 的polyfill就是为了解决兼容性问题,使得在不支持该方法的环境中也能...
9. **JavaScript中的 `alert()` 函数使用技巧详解:** 虽然在现代前端开发中使用较少,但在一些简单交互场景中仍然有用。 10. **41个Web开发者必须收藏的JavaScript实用技巧:** 涵盖了从基础语法到高级应用的各种...
在JavaScript 1.6版本之前,`indexOf`方法并未在所有浏览器中得到支持,尤其是IE浏览器在IE7和IE8中仅实现了到JavaScript 1.3版本,因此在这些旧版本的IE中尝试使用`indexOf`会抛出错误。相反,Chrome和Firefox等较...
i++){ if (browser.indexOf(mobileAgent[i])!=-1){ isMobile = true; //alert(mobileAgent[i]); location.href = '手机网址'; break; } } </script> 修改手机网址为自己的站点手机站目录,如...