Javascript有包含函数吗?
我不确定它会不会。一些网站显示在javascript中使用包含,但当我尝试时,它不起作用 我有Javascript有包含函数吗?,javascript,Javascript,我不确定它会不会。一些网站显示在javascript中使用包含,但当我尝试时,它不起作用 我有 var userAgent = navigator.userAgent.split(';'); if (userAgent.contains("msie7") == true) {...} 我试图使用useragent来确定用户是否在兼容模式下运行IE8。所以我想检查一下msie7和trident 4.0的userAgenet 那么我如何检查这个数组呢?在ES v3(大多数JS实现)中没有本机的a
var userAgent = navigator.userAgent.split(';');
if (userAgent.contains("msie7") == true) {...}
我试图使用useragent来确定用户是否在兼容模式下运行IE8。所以我想检查一下msie7和trident 4.0的userAgenet
那么我如何检查这个数组呢?在ES v3(大多数JS实现)中没有本机的
array.prototype.contains
。Mozilla/Firefox和其他选择采用它的现代JS引擎中都有Array.prototype.indexOf
您可以使用下面的代码在没有它的浏览器/引擎上实现它:
然后在分配它之后,您可以执行
Array.prototype.contains=function{返回this.indexOf(s)!=-1}
在ES v3(大多数JS实现)中没有本机Array.prototype.contains
。Mozilla/Firefox和其他选择采用它的现代JS引擎中都有Array.prototype.indexOf
您可以使用下面的代码在没有它的浏览器/引擎上实现它:
然后在分配它之后,您可以执行
Array.prototype.contains=function{返回this.indexOf(s)!=-1}
您可以使用indexOf
获取数组中包含您要查找的元素的索引。因此,您可以像这样重写if
语句:
if (userAgent.indexOf("msie7") > -1) {...}
if (navigator.userAgent.indexOf('msie') != -1)
// ...
请注意,IE(至少IE6)不支持数组的
indexOf
(但它可以处理字符串),但您可以编写自己的版本:
if (typeof Array.prototype.indexOf == 'undefined')
Array.prototype.indexOf = function(e) {
for (var i = 0; i < this.length; i++)
if (this[i] == e)
return i;
return -1;
}
if(typeof Array.prototype.indexOf=='undefined')
Array.prototype.indexOf=函数(e){
for(var i=0;i
您可以使用indexOf
获取数组中包含要查找元素的索引。因此,您可以像这样重写if
语句:
if (userAgent.indexOf("msie7") > -1) {...}
if (navigator.userAgent.indexOf('msie') != -1)
// ...
请注意,IE(至少IE6)不支持数组的
indexOf
(但它可以处理字符串),但您可以编写自己的版本:
if (typeof Array.prototype.indexOf == 'undefined')
Array.prototype.indexOf = function(e) {
for (var i = 0; i < this.length; i++)
if (this[i] == e)
return i;
return -1;
}
if(typeof Array.prototype.indexOf=='undefined')
Array.prototype.indexOf=函数(e){
for(var i=0;i
您可以随时推出自己的contains(),它可以在所有浏览器上处理数组对象
Array.prototype.contains = function(obj) {
var i = this.length;
while (i--) {
if (this[i] === obj) {
return true;
}
}
return false;
}
警告:“扩展javascript数组对象是一个非常糟糕的主意,因为在for-in循环中引入了新属性(自定义方法),这可能会破坏现有脚本。”
更好地使用主流库(如jQuery)提供的函数
关于此主题的完整讨论:您可以随时推出自己的contains(),它将在所有浏览器上处理数组对象
Array.prototype.contains = function(obj) {
var i = this.length;
while (i--) {
if (this[i] === obj) {
return true;
}
}
return false;
}
警告:“扩展javascript数组对象是一个非常糟糕的主意,因为在for-in循环中引入了新属性(自定义方法),这可能会破坏现有脚本。”
更好地使用主流库(如jQuery)提供的函数
关于此主题的完整讨论:是一个可以帮助您编写更好的跨浏览器javascript的库。它使用方便的方法(如“contains”)扩展javascript基本类型(、、等)
或者,您可以自己实现它,如其他答案所示。是一个库,可以帮助您编写更好的跨浏览器javascript。它使用方便的方法(如“contains”)扩展javascript基本类型(、、等)
或者,您可以自己实现它,如其他答案所示。您可以跳过数组,直接测试字符串,如下所示:
if (userAgent.indexOf("msie7") > -1) {...}
if (navigator.userAgent.indexOf('msie') != -1)
// ...
这里有一些。您可以跳过数组,直接测试字符串,如下所示:
if (userAgent.indexOf("msie7") > -1) {...}
if (navigator.userAgent.indexOf('msie') != -1)
// ...
这里有一些。最后我发现jquery有一个名为inary的方法,我使用了这个方法。所以我不必担心兼容性问题。最后我发现jquery有一个名为inary的方法,我使用了这个方法。因此,我不必担心兼容性问题。注意,他进行了
拆分
,因此userAgent
是一个数组,而不是字符串。在这两种情况下,indexOf
都会起作用。我如何才能更清楚地说明这一点?我尝试了userAgent[],但它不喜欢这样。我应该称之为userAgentArray(我认为在C#中这是一种糟糕的做法,但不确定javascript)注意,他进行了拆分
,因此userAgent
是一个数组,而不是一个字符串。在这两种情况下,indexOf
都会起作用。我如何才能更清楚地说明这一点?我尝试了userAgent[],但它不喜欢这样。我应该称之为userAgentArray(我认为在C#中这是一种不好的做法,但不确定javascript),我可能会检查它是否为null。我不支持IE 6。我刚刚提出了一个拒绝标志。IE6、7或8都不支持该方法,它最近在IE9平台预览上实现。我会推荐符合标准的版本。它可以使用第二个fromIndex
参数,使用严格比较运算符(==
),等等……我可能会检查它是否为空。我不支持IE 6。我刚刚提出了一个拒绝标志。IE6、7或8都不支持该方法,它最近在IE9平台预览上实现。我会推荐符合标准的版本。它可以在index参数中使用第二个,使用严格的比较运算符(==
)等…“警告”-无论如何不在in
中使用的一个很好的理由,因为许多库会在您不知道的情况下扩展原型。“警告”-无论如何不在in
中使用的一个很好的理由,因为许多库会在您不知道的情况下扩展原型。请尝试此链接尝试此链接