[英]Automatically force mobile browser to desktop view
我完成了一个使用Paypal IPN进行付款的项目的大量工作,我发现这在台式机浏览器上是成功的,但在移动设备上(至少在Chrome上)完全失败了。
经过研究,我发现这是由于移动浏览器使用GET方法返回Paypal数据,而不是使用POST的台式机。
如果我在移动浏览器上单击“请求桌面视图”,则将允许该过程正确完成,但是对于最终用户而言,这显然不是一件好事。
因此,由于我对此陷入僵局(实际上我已经被告知这是贝宝(Paypal)问题,无法控制-不确定是否为真),有没有一种方法可以自动强制桌面在移动浏览器上查看是万不得已?
我试图更改视口宽度( <meta name="viewport" content="width=1024">
),但是所有这些操作都是为了扩大移动浏览器的视图。 实际上,它不能像手动单击“请求桌面视图”那样提供正确的桌面视图。
请问有人可以通过HTML或JS强制桌面视图吗?
谢谢,
担。
通常,在某些情况下, <meta name="viewport" content="width=1024">
就足够了。
但是,如果您拥有针对mobile
和desktop
版本的单独索引,则可以使用以下脚本:
function parseUA() {
var u = navigator.userAgent;
var u2 = navigator.userAgent.toLowerCase();
return {
trident: u.indexOf('Trident') > -1,
presto: u.indexOf('Presto') > -1,
webKit: u.indexOf('AppleWebKit') > -1,
gecko: u.indexOf('Gecko') > -1 && u.indexOf('KHTML') == -1,
mobile: !!u.match(/AppleWebKit.*Mobile.*/),
ios: !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/),
android: u.indexOf('Android') > -1 || u.indexOf('Linux') > -1,
iPhone: u.indexOf('iPhone') > -1,
iPad: u.indexOf('iPad') > -1,
webApp: u.indexOf('Safari') == -1,
iosv: u.substr(u.indexOf('iPhone OS') + 9, 3),
weixin: u2.match(/MicroMessenger/i) == "micromessenger",
ali: u.indexOf('AliApp') > -1,
};
}
var ua = parseUA();
if (ua.mobile) {
location.href = './pc.html';
}
基本上,即使您使用移动设备,它也将被重定向到您的桌面版本。(我个人使用此方法)。
该脚本也可以在此链接中使用 。
var viewMode = getCookie("view-mode");
if(viewMode == "desktop"){
viewport.setAttribute('content', 'width=1024');
}else if (viewMode == "mobile"){
viewport.setAttribute('content', 'width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no');
}
所以,我相信这就是答案...! 在Paypal沙箱中做了很多工作以使事情变得正确,作为最后的选择,我决定只通知最终用户,他们将不得不进入移动浏览器的桌面模式并从那里转到那里,这带来了一些不便。
然后,我将链接从沙盒更改为实时贝宝。 然后,无论在台式机还是移动设备上都无法正常工作! 实时版本出现了一个完全不同的登录界面,这意味着我所有的沙盒修补工作都一无是处。 但是,新界面的URL与导致问题的移动版本相似。
我注意到大多数Paypal数据都被提取了,然后它突然出现在我身上。 它正在将txn_id详细信息放入我的数据库中时,我的付款处理页面仍依靠数据库中的那些详细信息来完全成功。 此数据输入数据库的速度不足以捕获信息。
在付款处理页面的顶部,我输入了sleep(15);
停止该过程,并给信息足够的时间进入数据库。 现在看来一切正常。
将width
设置为initial
确实解决了我的问题。 问题是我没有正确测试。 因此,到目前为止我的代码还不错。
JQuery代码是:
$(function() {
$( ".respoonsive-off" ).click(function() {
$('meta[name="viewport"]').prop('content', 'width=initial');
});
$( ".responsive-on" ).click(function() {
$('meta[name="viewport"]').prop('content', 'width=device-width, initial-scale=1');
});
});
然后是响应式媒体查询CSS,我们可以通过它切换视图。 以我.responsive-off
:在移动视图到桌面视图.responsive-on
当需要切换回.responsive-off
和.responsive-on
时。 有点像这样-但我想您会提前知道的:
@media (min-width: 1024px)/*or anything else you what this to show/hide*/{
.respoonsive-on{
text-decoration: none;
display: block;
}
.respoonsive-off{
text-decoration: underline;
font-weight: bold;
display: none;
}
}
}
@media (max-width: 1024px){
.respoonsive-on{
text-decoration: underline;
font-weight: bold;
display: none;
}
.respoonsive-off{
display: block;
font-weight: normal;
}
}
因此它可以在显示内容的同一页上; 无需其他/单独的页面。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.