我正在使用以下代码。它适用于Chrome,Firefox或Edge等浏览器。但是,当我在IE11中检查它不起作用并打破所有功能。
var href = jQuery(this).attr('href');
if (href.includes('#')) {
// action
}
我认为includes()
在IE11中不起作用。有解决方案吗?
答案 0 :(得分:3)
问题是因为所有版本的IE都不支持includes()
:MDN Reference
相反,您可以使用受更广泛支持的indexOf()
:
var href = $(this).attr('href');
if (href.indexOf('#') != -1) {
// action
}
答案 1 :(得分:0)
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>