是否可以在iOS上的微信内置浏览器中定位用户代理字符串?

int*_*aut 2 javascript user-agent browser-detection ios wechat

我一直在搜索有关内置微信浏览器生成的用户代理字符串的某种文档。

我进行了很多非常特定的浏览器检测,但找不到与微信传递给网站的UA字符串远程相关的任何内容。

这将遵循以下思路:

Mozilla / 5.0(iPhone; CPU OS 6_0,例如Mac OS X)AppleWebKit / 536.26(KHTML,例如Gecko)版本/6.0 Mobile / 10A5355d Safari / 8536.25

有谁知道有没有办法区分iOS上的Safari和iOS上的微信内置浏览器?(或者甚至有可能)

任何建议将不胜感激!

Sin*_*isa 5

我发现我有针对微信(微信)的JS API,所以我已经编辑了答案:http ://mp.weixin.qq.com/qa/index.php?qa=search&q= weixinjsbridge

长故事短,您只需将其添加到您的js中:

document.addEventListener('WeixinJSBridgeReady', function onBridgeReady() { 
    // bridge initialized, meaning we're in WeChat, not stand-alone browser...
}, false);
Run Code Online (Sandbox Code Playgroud)

还有一些API可以随时共享并与特定的朋友共享,并在成功共享时获取回调。

聚苯乙烯

刚刚发现,在iOS微信上,桥接的初始化方式比在Android上更快,因此此回调从未调用,因为在初始化桥接后添加了侦听器。

因此,为了完成答案,以下是正确执行的方法:

// when your webapp is loaded, before adding listener for weixing js bridge, check if it's already initialized:
var timeoutID = 0;
if( typeof WeixinJSBridge !== "undefined" )
{
    // WeChat JS bridge already initialized. Wonderful.
}
else
{
    // setup a time out of let's say 5 seconds, to wait for the bridge:
    timeoutID = window.setTimeout(WeChatBridgeTimeout,5000);
    // now add listener for the bridge:
    document.addEventListener('WeixinJSBridgeReady', WeChatBridgeReady, false);
}

// Now in bridge time out:
function WeChatBridgeTimeout()
{
     // Just to be sure that bridge was not initialized just before the line we added the listener (since it's a separate process than JS), let's check for it again:
      if( typeof WeixinJSBridge !== "undefined" )
      {
           // WeChat JS bridge already initialized. Wonderful.
      }
      else
      {
           // Nope... if it's not initialized by now, we're not in WeChat.
      }
}

// And in event handled:
function WeChatBridgeReady()
{
     // remove listener timeout
     window.clearTimeout(timeoutID);
     // WeChat JS bridge initialized.
}
Run Code Online (Sandbox Code Playgroud)


Jia*_*ang 5

这很简单。只需检查用户代理,如:

if(req.headers['user-agent'].indexOf('MicroMessenger') !== -1){
  //we are in wechat browser
  your code here
}
Run Code Online (Sandbox Code Playgroud)

有时,微信浏览器会恶意屏蔽 App Store 链接。那时您需要将用户重定向到其他地方,或引导他们在其他更友好的浏览器中打开您的页面。:)