2016-12-15 87 views
2

在完成了很多對使用貝寶IPN發起支付項目的工作,我發現,這是成功的桌面瀏覽器,但在移動完全失效100%(在Chrome , 至少)。自動強制移動瀏覽器,桌面視圖

經過一番研究,我發現,這是由於使用GET方法返回貝寶數據的移動瀏覽器,而不是使用POST桌面。

如果我「請求桌面視圖」點擊手機瀏覽器,那麼這將讓這個進程正常完成,但是這顯然不是一個面向最終用戶的極大樂趣。因爲我已經有了一個死衚衕(我實際上被告知這是一個PayPal問題,沒有控制權 - 不知道是否真實),有沒有辦法自動強制移動瀏覽器上的桌面視圖作爲最後的手段?

我試圖改變視口寬度(<meta name="viewport" content="width=1024"> ),但所有這一切都擴大了手機瀏覽器視圖。它實際上並沒有提供正確的桌面視圖,只需手動點擊「請求桌面視圖」即可獲得。

有人會知道是否有強制通過HTML或JS桌面視圖的方式嗎?

感謝,
丹。

回答

1

通常<meta name="viewport" content="width=1024">在某些情況下是足夠的。

但是,如果你有單獨的索引mobiledesktop版本,那麼你可以使用這個腳本:

 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'; 
     } 

基本上,即使你使用的移動然後它會被重定向到您的桌面版本(我個人使用這個方法)。

此腳本也適用於此link

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'); 
} 
+0

嗨,我沒有單獨的索引。我試過用視口進行測試,但不幸的是我沒有得到任何喜悅。謝謝。 –

2

所以,我相信這是答案...!在PayPal沙盒中做了這麼多工作以確保事情正確之後,作爲最後一招,我決定告知最終用戶,他們必須進入桌面模式才能使用移動瀏覽器,並且從那裏出發,帶來不便。

然後我改變了我的鏈接從沙箱到現場貝寶。然後在桌面或移動設備上都無法工作!現場版本中出現了完全不同的登錄界面,這意味着我的所有沙盒修補程序都是無用的。但是,新界面的網址類似於導致問題的移動版本。

我注意到,大多數貝寶的數據是被拉到對面,然後我恍然大悟。雖然它將txn_id的詳細信息放入我的數據庫,但我的付款處理頁面依賴於數據庫中的這些細節才能完全成功。該數據沒有被足夠快地輸入到數據庫中,以便捕獲信息。

在我的支付處理頁面的頂部我進入sleep(15);制止過程和所提供的信息足夠的時間來輸入數據庫。現在這一切似乎工作正常。