如何使用JavaScript检测Safari浏览器?我在下面尝试了代码,它不仅可以检测Safari,还可以检测Chrome浏览器.
function IsSafari() {
var is_safari = navigator.userAgent.toLowerCase().indexOf('safari/') > -1;
return is_safari;
}
Run Code Online (Sandbox Code Playgroud) 我正在构建一个以多列格式呈现给用户的菜单系统.CSS3中的列数属性让我获得了90%的优势,但我在Chrome下的对齐方面遇到了困难.
菜单相对简单:
我所拥有的对齐问题最明显,每个列表项都有一个顶部边框和一些背景颜色.在Firefox中,列表项始终在每列中干净地对齐,从不会流入上一列/下一列.在Chrome中,对齐是一个废话,随着列表项的数量和任何填充/边距属性而变化.
我在这里发布了一个简单测试用例的代码:http://pastebin.com/Ede3JwdG
问题应该立即显而易见:在Chrome中,第二列中的第一个列表项会回流到第一列.当您删除列表项(单击它们)时,您可以看到对齐进一步分解.
我已经尝试调整列表项的填充/边距无济于事:Chrome似乎对于如何在多列布局中流动内容有一个有缺陷的算法.
我没有完全放弃列数(主要是手动生成/ Columnizer /等)的主要原因是菜单系统还涉及跨多个子菜单的拖放功能,并且菜单数据已经布局作为一个基于列表的内聚层次结构,可以实现干净的代码.
有没有办法解决Chrome中的对齐问题,或者我现在应该放弃列数?
添加:
我不是很熟悉javascript所以请耐心等待我.Safari 6及以下和较旧的Android移动浏览器可能更多不支持css值VH.我的DIV #id或class不是视口的高度.下面是一个页面的链接,我发现了一些有用的信息,但我真的不知道如何使用它与css值:
以下是作为快捷方式给出的代码:
if('opacity' in document.body.style) {
// do stuff
}
function isPropertySupported(property{
return property in document.body.style;
}
Run Code Online (Sandbox Code Playgroud)
在我上面附带的链接的评论中,有人确实询问如何检查是否支持css VALUE,答案是"你设置它,然后读取值并检查浏览器是否保留它." 现在我确定如果我知道更多我刚开始学习的javascript,这将是有用的信息.
这是我的想法,但我真的不知道如何去做这件事.检查div#id或div.class是否具有vh css值.检查浏览器是否支持css值.如果支持则继续加载.如果不支持,则更改id或class.
总结一下我的问题:
如何使用javascript或jquery检查浏览器是否支持css值?
对答案的指导非常感谢.谢谢你的帮助.
我一直在玩不同的脚本,我发现一个适用于Chrome以外的所有脚本...这是我用来区分.CSS文件的代码.我尝试将浏览器名称改为"Chrome",但这不起作用.
if (browser == 'Firefox') {
document.write('<link rel="stylesheet" href="../component/fireFoxdefault.css" />');
}
if (browser == 'Safari') {
document.write('<'+'link rel="stylesheet" href="../component/default.css" />');
}
Run Code Online (Sandbox Code Playgroud) 我知道Stack Overflow上有一千个关于用JavaScript检测浏览器的问题.我的问题是如何在没有window.navigator(包括navigator.userAgent)的情况下检测浏览器?
首先,澄清一下,我不需要知道渲染引擎,这不适用于自适应布局,也不要惊慌:我已经在进行特征检测了.如果,为什么我问有关检测浏览器是很重要的,请评论,我会很乐意在解释拼接,但它可能会使问题严重长.
接下来,让我描述为什么我的问题不是重复的:
Javascript中的浏览器检测? 因为的19个答案,12都使用navigator.userAgent特异性(包括jQuery.browser其中使用的userAgent,现在正在反正消失),4使用navigator.appName(其给出"网景"在Chrome ...),1下侧的步骤通过推荐的特征检测,问题这不同于浏览器检测(我已经在使用特征检测,但要知道我可以使用它们的程度,我需要浏览器检测),2并不是真正的答案或是IE特定的.(虽然这种非的回答居然是,为什么在这里,我的问题是非常相关的解释:我试图避免碰到痛点在某些浏览器会崩溃的标签!)因为我的问题是问一个答案(甚至是黑客? )没有使用window.navigator,它不是该问题的副本.
检查用户是否正在使用IE, 因为 11个答案,10个使用navigator.userAgent,其中1个使用IE技巧仅检测IE,这不足以回答我的问题(尽管它可能只是发布的有用解决方案的一小部分)这里)?
在Javascript中,如何确定我当前的浏览器是否是计算机上的Firefox与其他所有浏览器? 因为 11个答案,8个使用navigator.userAgent,2个推荐特征检测(再次,不是我的问题),1个甚至不是答案,真的.
如何检测chrome和safari浏览器(webkit), 因为有8个答案,其中6个使用navigator.userAgent,2个是webkit特定的.不幸的是,WebKit并不一定只与Safari绑定,我需要知道浏览器,而不是渲染引擎.
希望这很清楚.
我知道还有其他方法可以做到这一点,但我不太了解每个浏览器的细节.在某些浏览器中是否存在始终或可靠地暴露给JavaScript的对象或变量?我知道一些实验性的API是以供应商为前缀的,但这对于在商业产品中使用似乎不是一个好主意,尽管如果需要我愿意屈服于那么低.还有其他可能吗?
编辑: 我实际上使用PHP来检测和创建一个带有php标签的局部变量.
if ( strpos(strtolower($_SERVER['HTTP_USER_AGENT']), 'webkit')) {
$is_webkit = "true";
}
Run Code Online (Sandbox Code Playgroud)
如何检测浏览器是否基于webkit?(谷歌Chrome,更新的Opera,safari);
我试过这个:
var isWebkit = (window.webkitURL != null);
if(isWebkit){
alert("i am a webkit based browser!");
}
Run Code Online (Sandbox Code Playgroud)
不适用于野生动物园
如果我需要检测Firefox,我已经使用了下面的代码:
var firefox = !(window.mozInnerScreenX == null);
Run Code Online (Sandbox Code Playgroud)
我很好奇是否有类似检测webkit浏览器的东西而没有检查用户代理字符串.像检查特定功能只有webkit浏览器有?
javascript ×5
css ×3
browser ×2
jquery ×2
webkit ×2
alignment ×1
css3 ×1
user-agent ×1
viewport ×1