由于兼容性问题,我需要为 safari(仅限桌面)停用一个脚本。
脚本必须位于正文中,不能位于链接的 .js 文件中。
我尝试添加一个 if 语句来修改脚本的“Cburl”,这样如果检测到 safari 并且给出了错误的 url,那么脚本将不会加载。
原创
<script type="text/javascript">
var cbuser = { name: '', email: '', message: '' },
access_token = '3354777755',
cburl = '//www.domain.com/help/';
document.write('<script type="text/javascript" src="' + cburl + 'assets/help/js/script.js"></' + 'script>');
</script>
使用 Safari 检测:
<script type="text/javascript">
var safari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent); //check if safari
var cbuser = { name: '', email: '', message: '' },
access_token = '3354777755',
if(!safari){
cburl = '//www.domain.com/nohelp/';
document.write('<script type="text/javascript" src="' + cburl + 'assets/help/js/script.js"></' + 'script>');
}
else {
cburl = '//www.domain.com/help/';
document.write('<script type="text/javascript" src="' + cburl + 'assets/help/js/script.js"></' + 'script>');
}
</script>
我检测Safari的方式有问题吗?
最佳答案
我曾经用它来检查用户是否正在使用 safari。
var isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);
然后您可以停止执行此操作的脚本:
if(isSafari){
alert('Is safari');
//Do something
} else {
alert('Is other browser');
// Do something
}
这是一个 fiddle,您可以使用它。
这是针对您的具体案例的片段。我将 document.write
更改为 windows.location
以使其正常工作。
var isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);
if(isSafari) {
var cbuser = { name: '', email: '', message: '' };
var access_token = '7654345676';
window.location = "https://www.example.com/notSafari";
} else {
var cbuser = { name: '', email: '', message: '' };
var access_token = 'Z2SxfM5dRzKsm3Auhbi4';
window.location = 'https://www.example.com';
}
Just change the ´https://www.example.com´ to your URLs.
关于javascript - 检测 safari 并停止脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49872111/