我知道检测移动浏览器的各种方法,但我很难找到一种方法来弹出移动用户的对话框,允许他们确认他们想要查看常规页面(而不是切换到移动网站(,即使他们在网站的非移动版本上。不幸的是,这是我的要求,而不是简单的重定向。
我曾以为我可以使用jquery mobile,但我没有找到一种方法来使正确的rel = dialog东西工作。如果有一个预构建的jquery脚本,浏览器会检测到并为移动用户弹出一个对话框,要求他们切换到移动URL?
$(function () {
if (navigator.userAgent.match(/Android/i) || navigator.userAgent.match(/iPhone/i)) {
$.mobile.changePage($('#my-dialog'), {
role : 'dialog'
});
}
});
您可以使用 $.mobile.changePage()
函数以编程方式调用对话框:http://jquerymobile.com/demos/1.0/docs/api/methods.html
您很可能希望更新决定浏览器是否为移动浏览器的if
语句,我发布的代码只是捕获Android和iPhone设备的一个例子。
以下是一些match()
文档 https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/match:
如果正则表达式包含 g 标志,则该方法返回 包含所有匹配项的数组。如果没有匹配项,则该方法 返回空值。
null
将解析为falsy
,查找任何匹配项将解析为truthy
。
更新
好的,所以要显示一个没有jQuery Mobile的模式对话框,你可以创建一个覆盖网站其余部分的DOM元素:
$(function () {
if (navigator.userAgent.match(/Android/i) || navigator.userAgent.match(/iPhone/i)) {
$('body').append('<div style="position : absolute; z-index : 999; top : 0; left : 0; width : 100%; height : 100%; background : #000; opacity : 0.5; filter : alpha(opacity=50);" /><div style="position : absolute; z-index : 1000; top : 50%; left : 50%; width : 200px; height : 100px; margin-left : -100px; margin-right : -50px;">Your dialog text goes here</div>');
}
});
我喜欢做的是在页面顶部显示一个"通知栏",告诉用户有关移动网站的信息:
$(function () {
if (navigator.userAgent.match(/Android/i) || navigator.userAgent.match(/iPhone/i)) {
$('body').prepend('<div id="mobile-notice" style="position : relative; display : none;">copy goes here</div>').find('#mobile-notice').slideDown(500);
}
});
我有一个可以解决您的问题的解决方案。 它使用css并有一个MediaQuerie。如果浏览器宽度小于350px,则显示内容。检查它 - http://jsfiddle.net/Rw6MD/