Как заставить IE игнорировать участок кода JS?
Есть код:
const links = document.querySelectorAll('.nav-link');
const sections = [... document.querySelectorAll('.forJS')];
const callback = (entries) => {
links.forEach((link) => link.classList.remove('active'));
const elem = entries.find((entry) => entry.isIntersecting);
if (elem) {
const index = sections.findIndex((section) => section === elem.target);
links[index].classList.add('active');
}
}
let observer = new IntersectionObserver(callback, {
rootMargin: '0px',
threshold: 0.5
});
sections.forEach((section) => observer.observe(section));
IE ругается на вторую строчку кода(SCRIPT1002: Синтаксическая ошибка), подcвечиваются квадратные скобки [], затем еще как какую то (если удалить ту на которую он ругался до этого) и т.д. Как можно заставить его игнорировать этот участок кода? Пытался делать так:
const isIE = /*@cc_on!@*/false || !!document.documentMode;//Определяем IE ли это
if(!isIE){//Если не IE выполняем участок кода
...Весь код...
};
Что можно сделать еще?
Ответы (2 шт):
Где-то, когда-то нашел - выручает
function browserCheck() {
const ua = navigator.userAgent.match(/(opera|chrome|safari|firefox|msie)\/?\s*(\.?\d+(\.\d+)*)/i);
let browser = '';
if (navigator.userAgent.match(/Edge/i) || navigator.userAgent.match(/Trident.*rv[ :]*11\./i)) {
browser = 'msie';
} else {
browser = ua[1].toLowerCase();
}
document.body.classList.add(browser);
return browser;
}
Если вы используете php, можно сделать так. Выносим этот код, на который IE ругается в отдельный файл. Затем следующий скрипт на php, который определяет, является ли текущий браузер IE и затем обычный условный оператор. Если у пользователя не IE загружаем скрипт, иначе нет.
$ie = htmlentities($_SERVER['HTTP_USER_AGENT'], ENT_QUOTES, 'UTF-8');
<?php if (preg_match('~MSIE|Internet Explorer~i', $ie) || (strpos($ie, 'Trident/7.0') == false && strpos($ie, 'rv:11.0') == false)) {
?>
<script src="js/ourScript.js"></script>
<?php };?>
UPD. Можно и без php, но опять таки в отдельный файл наш скрипт и таким образом подключаем:
<!--[if !IE]-->
<script src="js/ourScript.js"></script>
<!--[endif]-->