Я использую функцию postMessage()
, чтобы заполнить сообщение с мобильного приложения на поля веб-сайта. Я тестировал его в браузере, и все работает отлично. Однако, когда я пытался протестировать Android-телефон, ничего не заселено.AddEventListener работает в браузере, но не на Android
App сторона:
var password = localStorage.getItem("password");
var language = localStorage.getItem("lang");
var credentials = username+'-'+password;
var msg = language+':'+username+'-'+password;
var loginWindow = window.open('https://link', '_blank', 'location=yes');
function giveMeUsername(){
loginWindow.postMessage(msg, 'https://link');
console.log('open window');
}
window.addEventListener('message', function(event) {
alert('listener alert');
var message = event.data;
if(message == 'giveMeUsername'){
console.log('call giveMeUsernam');
giveMeUsername();
}
}, false);
Эта линия alert('listener alert');
показывает предупреждение в браузере, но когда я проверить его на Android устройстве (APK-файл), ничего не отображается, и сообщение не отправляется на веб-сайт.
сторона Сайт:
addScriptDeclaration("
console.log('message received1: ');
window.onload = function(){
window.opener.postMessage('giveMeUsername', '*');
console.log('message received2: ');
};
function GetSubstringIndex(str, substring, n) {
var times = 0, index = null;
while (times < n && index !== -1) {
index = str.indexOf(substring, index+1);
times++;
}
return index;
}
window.addEventListener('message', function(event) {
console.log('message received3: ');
//if(event.origin !== 'http://appery.io') return;
var message = event.data;
console.log('message received5: '+message);
//var username = message.substr(0, message.indexOf('-'));
var lang = message.slice(0,2);
var username = message.substring(message.lastIndexOf(':')+1,message.lastIndexOf('-'));
var password = message.substr(message.indexOf('-') + 1);
jQuery('input#username').val(username);
jQuery('input#password').val(password);
document.getElementById('loginbtn').click();
var x = document.getElementById('loginbtn').name;
console.log('message received6: '+ x);
}, false);
");
$document->addScriptDeclaration("
console.log('message received6: ');
");
?>
Я сбит с толку, как и я не знаю ни одного метода отладки .apk. Я только разрабатываю, тестирую и отлаживаю браузер, и все, что работает в браузере, обычно работает на Android.
Не может помочь вам с вашей проблемой, но вы можете отлаживать .apk удаленно с помощью Chrome DevTools. Инструкции: https://developer.chrome.com/devtools/docs/remote-debugging. – balzafin
@balzafin Я использовал weinre, никаких ошибок не видно. Я нашел проблему, потому что я использую inAppBrowser. Я нашел обходное решение здесь, но не уверен, как его реализовать в моем коде http://blogs.telerik.com/appbuilder/posts/13-12-23/cross-window-communication-with-cordova's-inappbrowser – Hawk