Javascript 根据用户代理加载样式表
我必须加载不同的样式表,这取决于用户代理是iPad还是其他。我知道,一般来说,检测浏览器并不是一个非常好的主意,在将来的某个时候可能会削弱我们的可维护性。这不是我的决定 所以这里我们有一些JavaScript来检测用户代理。它不起作用了。我可能漏掉了什么。我得到的错误是一个红鲱鱼(对象引用),但只有在我执行JavaScript时才会出现Javascript 根据用户代理加载样式表,javascript,jquery,Javascript,Jquery,我必须加载不同的样式表,这取决于用户代理是iPad还是其他。我知道,一般来说,检测浏览器并不是一个非常好的主意,在将来的某个时候可能会削弱我们的可维护性。这不是我的决定 所以这里我们有一些JavaScript来检测用户代理。它不起作用了。我可能漏掉了什么。我得到的错误是一个红鲱鱼(对象引用),但只有在我执行JavaScript时才会出现 $(document).ready(function () { alert('ready fired'); if (na
$(document).ready(function () {
alert('ready fired');
if (navigator.userAgent.indexOf("iPad") != -1) {
//alert('bleep bloop blop...iPad detected');
var stringToWrite = '<script src=\'\<\%\= ResolveUrl("~/Scripts/iscroll.js") \%\>\' type="text/javascript"><\/script>';
stringToWrite += '<link href=\'\<\%\= ResolveUrl("~/Stylesheets/scrollbar.css") \%\>\' rel="stylesheet" type="text/css" \/>';
stringToWrite += '<link href=\'\<\%\= ResolveUrl("~/Stylesheets/iPadCommon.css") \%\>\' rel="stylesheet" type="text/css" \/>';
alert(stringToWrite);
document.write(stringToWrite);
}
//else
//alert('bleep bloop blop...who cares browser');
});
$(文档).ready(函数(){
警报(“准备发射”);
if(navigator.userAgent.indexOf(“iPad”)!=-1){
//警报('bleep-bloop-blop…检测到iPad');
var stringToWrite='';
stringToWrite+='';
stringToWrite+='';
警报(stringToWrite);
文件编写(stringToWrite);
}
//否则
//警报('bleep-bloop-blop…谁在乎浏览器');
});
在互联网上随机发现:
//returns true if user is using one of the following mobile browsers
var ismobile=navigator.userAgent.match(/(iPad)|(iPhone)|(iPod)|(android)|(webOS)/i)
您可能应该考虑在服务器端检测代理,否则对于JavaScript禁用的浏览器将不起作用。p> 如果可能,您应该使用
@media-handled
来使用特定于手持设备的样式规则
如果这也是理所当然的,也就是说,如果iPad与iPhone与Android需要不同的CSS,那么您应该进行服务器端检测,并将CSS类添加到
和/或
标记中,如
<html class="android">
或
昆廷的评论是正确的——尝试编写服务器端元标记
将不起作用,因为服务器没有运行javascript编写的内容。服务器已完成处理。您的userAgent是否存在问题?发出警报('bleep-bloop-blop…检测到iPad')代码>被调用(如果没有被注释掉)?就我个人而言,我想用服务器端语言进行这种检查。@pepperedlemons-是的,它被调用了。检测很好。一定是我的绳子逃走了。希望有一个javascript webapp online的自动转义这个蹩脚字符串。看起来你正在试图转义服务器端使用的东西-,是的,它会回来咬你。只要使用媒体查询,它就更理智了。+1我开始明白为什么我应该这样做,而不管别人告诉我什么@昆汀说得很有道理。
<body class="iOS">