includes() 在 IE 中不起作用

新手上路,请多包涵

我正在使用以下代码。它在 Chrome、Firefox 或 Edge 等浏览器中完美运行。但是,当我签入 IE11 时,它不起作用并破坏了所有功能。

 var href = jQuery(this).attr('href');
if (href.includes('#')) {
  // action
}

我认为 includes() 在 IE11 中不起作用。有解决办法吗?

原文由 rajausman haider 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1k
2 个回答

问题是因为 includes() 在所有版本的 IE 中不受支持: MDN 参考

相反,您可以使用更广泛支持的 indexOf()

 var href = $(this).attr('href');
if (href.indexOf('#') != -1) {
  // action
}

您还可以将其原型化以将 includes() 方法添加到 IE:

 String.prototype.includes = function(match) {
  return this.indexOf(match) !== -1;
}

原文由 Rory McCrossan 发布,翻译遵循 CC BY-SA 4.0 许可协议

includes Internet Explorer(或 Opera)不支持

相反,您可以使用 indexOf#indexOf 如果在字符串中则返回子串第一个字符的索引,否则返回-1。 (很像数组等价物)

尝试以下操作:

 var href = jQuery(this).attr('href');

if(href.indexOf('#') > -1) //this will true if the string contains #
{
   // action
}

这是所有浏览器都支持的。 是您的问题的好读物:)

原文由 Muhammad Qasim 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏