我刚刚改变了这样一个事实:我网站的用户使用的是一个非常旧的浏览器,它不运行jquery(在这种情况下是Safari 1.x),因此无法访问使用jquery的登录面板slideToggle功能。
有人能想到一个能够检测浏览器是否能够使用jquery的修复程序 - 如果没有这个链接会转到另一个页面而不是显示登录面板吗?
答案 0 :(得分:5)
您可以进行一些有条件的检查,例如
if(!'jQuery' in window) {
// jQuery is not available
}
或者,如果Safari 1.x不知道IN
运算符(我不确定),请使用
if(!window.jQuery) {
}
答案 1 :(得分:4)
我认为对此有另外的答案,但对我来说,我将不得不权衡你支持他过时的浏览器的时间(我确信网站内可能还有其他东西),而不是回报给你......
答案 2 :(得分:2)
在登录链接的href =的纯HTML源代码中,将其设置为纯HTML登录页面。
使用jQuery,将点击处理程序附加到链接,如果此部分失败,那没关系,浏览器将只关注指向普通登录页面的链接中的href,允许旧浏览器用户登录。 / p>
$(document).ready(function(){
$('#login_link_id').click(function(){
// Your code here
});
});
答案 3 :(得分:1)
如果您使用javascript / jQuery,您应该始终确保您的网站在没有它的情况下完美运行。在这种情况下,如果您有一个登录弹出框;你可能会分配一个在DOM加载后分配的点击事件。
您应该做的是确保如果jQuery不存在,则链接会加载“普通”登录网页而不是弹出框。我使用类似的东西:
<a href="/login.html" id="loginlink">Log in</a>
<script>
if(!'jQuery' in window) {
$(document).ready(function(){
//assign on click event to loginlink
});
}
</script>
如果jQuery不存在,则login.html
将正常打开。
答案 4 :(得分:0)
var isJQSupported = false;
$(function() { //shorthand for document.ready
isJQSupported = true;
//your usual code
});
if (!isJQSupported) {
window.location = "http://www.apple.com/safari/download/";
}
答案 5 :(得分:0)
对我而言,听起来像safari 1.X内部存在jQuery问题。这意味着简单的检查,例如全局空间中是否存在$或者$(函数)是否做任何事情都无济于事。
最可能的根本原因是javascript会在加载jQuery本身时抛出错误,然后会停止执行其余的javascript代码。
这里有四个可行的选择。
可能还有更多选择。我个人倾向于要求用户使用兼容的浏览器,因为支持Safari 1.x是荒谬的。
答案 6 :(得分:0)
这似乎需要progressive enhancement的情况。
您必须进行多项检查
在检查结束时,当jQuery报告您需要的功能时 - 脚本的其余部分可以运行。
如果你不确定你使用的支持中提到了哪些功能,那么这可能需要在Safari 1.x上进行一次测试才能看到$ .support()返回的值是什么,但这就是你的讨厌旧浏览器用户可以为您做(如果您准备代码并发布)并报告生成的文本。然后,将列表与可访问的其他[旧]浏览器进行比较,并确定所需的功能。
如果缺少任何功能,那么简单的方法就是要求所有内容并取消所有脚本。这也将排除IE6和IE7以及低于9.something和firefox低于2.0或包含的歌剧 - 我不确定。
答案 7 :(得分:0)
使用服务器端语言检测它是否是基于用户代理的旧Safari,并加载不同的javascript文件