包括()不在IE中工作

时间:2017-03-31 11:24:09

标签: javascript jquery

我正在使用以下代码。它适用于Chrome,Firefox或Edge等浏览器。但是,当我在IE11中检查它不起作用并打破所有功能。

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

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

3 个答案:

答案 0 :(得分:3)

问题是因为所有版本的IE都不支持includes()MDN Reference

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

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

答案 1 :(得分:0)

Internet Explorer(或Opera)

不支持

includes

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

尝试以下方法:

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

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

所有浏览器都支持此功能。 This可以很好地解读您的问题:)

答案 2 :(得分:0)

首先你可以检查一下。因为IE不支持包括:MDN Reference

你可以这样使用。是的,我知道这是VanillaJS的方式。如果您使用这种方式跨浏览器工作以避免错误。:

var btn = document.querySelector('button')
var link = document.querySelector('a')
var isIE = window.navigator.userAgent.indexOf('Triden') > -1

btn.addEventListener("click", function() {
	
  var isHash = (!isIE) ? link.href.includes('#') : link.href.indexOf('#') > -1
  alert(isHash)
}, false)
<button>Control hash</button>
<hr />

<a href="http://somesite.com/#/GetUsers">Users</a>