I am using the following code. It works perfectly in browsers such as Chrome, Firefox or Edge. However when I check in IE11 it does not work and breaks all the functionality.
var href = jQuery(this).attr('href');
if (href.includes('#')) {
// action
}
I think includes()
does not work in IE11. Is there a solution for this?
indexOf() The Array#indexOf() function is a common alternative to includes() . The indexOf() function returns the first index in the array at which it found valueToFind , or -1 otherwise.
In JavaScript, includes() method determines whether a string contains the given characters within it or not. This method returns true if the string contains the characters, otherwise, it returns false.
The indexOf() method returns the position of the first occurrence of a value in a string. The indexOf() method returns -1 if the value is not found. The indexOf() method is case sensitive.
The issue is because includes()
is unsupported in all versions of IE: MDN Reference
Instead you can use the much more widely supported indexOf()
:
var href = $(this).attr('href');
if (href.indexOf('#') != -1) {
// action
}
You could also prototype this to add the includes()
method to IE:
String.prototype.includes = function(match) {
return this.indexOf(match) !== -1;
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With