Я отредактировал свой ответ, так как обнаружил, что для Weixin (WeChat) существует 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);
Также есть API, чтобы делиться моментами и делиться с конкретным другом, а также получать обратный вызов при успешном обмене.
P.S.
Только что выяснил, что в iOS WeChat мост инициализируется намного быстрее, чем в 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.
}
person
Sinisa
schedule
08.08.2014