AddEventListener适用于浏览器,但不适用于Android
AddEventListener works on the browser but does not on Android
我使用postMessage()
函数将消息从移动应用程序填充到网站字段。我在浏览器上测试了它,一切都很完美。然而,当我尝试在安卓手机上进行测试时,没有填充任何内容。
应用端:
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上工作。
两件事:
在设备(手持设备)上,不支持Alert()
功能。您必须使用Cordova对话框插件。org.apache.cordova.dialogs
我会试试document.addEventListener
,看看它是否会着火。
相关文章:
- HTML5 Canvas toDataURL(“image/png”)适用于一些绘画,而有些则不然,不确定原因
- JavaScript不显示剩余字符,但适用于其他页面
- 我如何完善这个Javascript代码,使其只适用于来自图像的链接(而不是来自文本的链接)
- 为什么这只适用于身体部分而不是头部
- 为什么不't此正则表达式适用于重复出现的对
- document.getElementById 对内部 html 的调用适用于 $_POST 和 $_GET 变量,但不
- JavaScript 位置适用于本地主机而不是服务器
- Rally App SDK 2.0:Rallymultiobjectpicker,适用于不显示displayField的
- jQuery事件在Mozilla上不起作用,并且适用于其他浏览器
- Angular.js - 控制器不为索引执行,适用于其余模板
- D3 .on 更改适用于文本而不是图表
- Zillow 数据 - json_encode不起作用 - 适用于常规变量
- 弹出模式仅适用于表格中的第一个元素,第二次单击后不会再次打开
- Phonegap Android项目适用于模拟器,而不是实际的手机
- ajax jonp 不应该适用于 请求的上不存在“访问控制-允许源”标头
- AngularJS:ng-单击不起作用,适用于<按钮>
- Javascript不会在移动设备上加载.适用于桌面
- 为什么我的代码适用于高度:100px,而不是高度:100%
- 拖放区.js + Laravel-多文件上传不起作用(仅适用于一个文件)
- 哪些限制适用于不透明响应