JavaScript를 사용하여 Safari 브라우저를 감지하는 방법? 아래 코드를 시도했는데 Safari뿐만 아니라 Chrome 브라우저도 감지합니다.
function IsSafari() {
var is_safari = navigator.userAgent.toLowerCase().indexOf('safari/') > -1;
return is_safari;
}
답변
Chrome 색인을 사용하여 Chrome을 쉽게 필터링 할 수 있습니다.
var ua = navigator.userAgent.toLowerCase();
if (ua.indexOf('safari') != -1) {
if (ua.indexOf('chrome') > -1) {
alert("1") // Chrome
} else {
alert("2") // Safari
}
}
답변
참고 : 수정하려는 특정 행동을 항상 타겟팅하지 말고 감지하십시오.isSafari?
최후의 수단 으로이 정규식으로 Safari를 감지하십시오.
var isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);
부정적인 둘러보기를 사용하며 Chrome, Edge 및 Safari
사용자 에이전트에 이름 을 포함하는 모든 Android 브라우저를 제외합니다 .
답변
다른 사람들이 이미 언급했듯이 기능 검색은 특정 브라우저를 확인하는 것보다 선호됩니다. 한 가지 이유는 사용자 에이전트 문자열을 변경할 수 있기 때문입니다. 또 다른 이유는 문자열이 최신 버전에서 코드를 변경하고 중단시킬 수 있기 때문입니다.
그래도 Safari 버전을 테스트하고 싶다면 이것을 사용하는 것이 좋습니다.
var isSafari = navigator.vendor && navigator.vendor.indexOf('Apple') > -1 &&
navigator.userAgent &&
navigator.userAgent.indexOf('CriOS') == -1 &&
navigator.userAgent.indexOf('FxiOS') == -1;
Mac, iPhone, iPod, iPad 등 모든 장치에서 Safari의 모든 버전에서 작동합니다.
편집하다
현재 브라우저에서 테스트하려면 https://jsfiddle.net/j5hgcbm2/
편집 2
iOS에서 Chrome을 올바르게 감지 하도록 Chrome 문서 에 따라 업데이트되었습니다.
iOS의 모든 브라우저는 Safari의 래퍼 일 뿐이며 동일한 엔진을 사용한다는 점은 주목할 가치가 있습니다. 이 글에서 자신의 답변에 대한 bfred.it의 의견을 참조하십시오.
편집 3
iOS에서 Firefox를 올바르게 감지 하도록 Firefox 문서 에 따라 업데이트되었습니다.
답변
그냥 사용하십시오 :
var isSafari = window.safari !== undefined;
if (isSafari) console.log("Safari, yeah!");
답변
이 코드는 사파리 브라우저 만 감지하는 데 사용됩니다
if (navigator.userAgent.search("Safari") >= 0 && navigator.userAgent.search("Chrome") < 0)
{
alert("Browser is Safari");
}
답변
chrome 및 safari 용 userAgent가 거의 동일하므로 브라우저 공급 업체를보다 쉽게 확인할 수 있습니다.
원정 여행
navigator.vendor == "Apple Computer, Inc."
크롬
navigator.vendor == "Google Inc."
FireFox (비어있는 이유는 무엇입니까?)
navigator.vendor == ""
IE (왜 정의되지 않습니까?)
navigator.vendor == undefined
답변
사파리 whitout 크롬 만 :
다른 코드를 시도한 후에 새롭고 오래된 버전의 Safari에서 작동하는 코드를 찾지 못했습니다.
마지막 으로이 코드가 저에게 매우 효과적입니다.
var ua = navigator.userAgent.toLowerCase();
var isSafari = false;
try {
isSafari = /constructor/i.test(window.HTMLElement) || (function (p) { return p.toString() === "[object SafariRemoteNotification]"; })(!window['safari'] || safari.pushNotification);
}
catch(err) {}
isSafari = (isSafari || ((ua.indexOf('safari') != -1)&& (!(ua.indexOf('chrome')!= -1) && (ua.indexOf('version/')!= -1))));
//test
if (isSafari)
{
//Code for Safari Browser (Desktop and Mobile)
document.getElementById('idbody').innerHTML = "This is Safari!";
}
else
{
document.getElementById('idbody').innerHTML = "Not is Safari!";
}
<body id="idbody">
</body>