我正在处理一个查看页面上的表值列表的函数,如果列标题包含output
的任何部分,它将相应地转换该值。
function createLink(field, val) {
var output = {
'ntid': 'https://internal/profile/' + val,
'email': 'mailTo:' + val
};
var i, key, keys = Object.keys(output);
for ( i = 0; i < keys.length; ++i ) {
key = keys[i];
if ((field.toLowerCase()).includes(key)) {
return '<a href="'+output[key]+'" target="_blank">'+val+'</a>';
}
}
return val;
}
我遇到的问题是IE在.includes()
行引发错误,指出“对象不支持属性或方法'包含'”。
让它按原样运行有点麻烦,但没有意识到includes()
必须是并非所有浏览器都支持的东西。
还有什么我可以用来代替这个,以便支持跨浏览器支持吗?
答案 0 :(得分:10)
includes()
is part of the ES6
规范,因此在IE中不受支持。您可以使用的是indexOf(element) !== -1
答案 1 :(得分:5)
取代:
if(field.toLowerCase().includes(key)) {
为:
if(field.toLowerCase().indexOf(key) > -1) {
答案 2 :(得分:1)
供您参考,Mozilla Developer Network显示哪些浏览器支持String.prototype.includes
。
IE没有任何支持。话虽如此,您可以随时对其进行填充,或者像其他人指定的那样进行填充并使用String.prototype.indexOf
。
Polyfill src:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes#Polyfill
if (!String.prototype.includes) {
String.prototype.includes = function(search, start) {
'use strict';
if (typeof start !== 'number') {
start = 0;
}
if (start + search.length > this.length) {
return false;
} else {
return this.indexOf(search, start) !== -1;
}
};
}