在Android和网站之间使用postMessage()

时间:2015-03-29 08:52:02

标签: javascript php android html5 joomla

我有一个移动应用程序,使用以下JS onclick导航到新窗口中的网站登录页面:

window.open('https://URL', '_blank', 'location=yes');

新窗口打开如下:

enter image description here

我需要自动填充其字段中的用户名。我发现postMessage()方法非常适合进行跨域通信(例如,这个example)。但我在Android和网站之间找不到任何使用它的例子。

现在我明白我需要修改双方(即源和目的地)才能使用postMessage()。我理解源方面。我的问题是关于目的地,因为我不熟悉Joomla,也不熟悉PHP。所以问题是,鉴于页面是默认的Joomla登录页面,我需要在目的地侧修改。我知道目录components/com_users/views/login/tmpl/default_login.php中的登录表单在哪里,但我不知道我应该在哪里更新,以及我应该在哪里更新。我应该创建iFrame吗?或者我只需要在登录表单中添加此方法?

1 个答案:

答案 0 :(得分:0)

不确定Android方面,如果Android SDK支持某种postMessage发送到window对象,那么你可以使用postMessage。

在您的情况下,您将在变量中捕获新创建的窗口:

var loginWindow = window.open('https://URL', '_blank', 'location=yes');

然后您可以将postMessage发送到该窗口,如下所示:

loginWindow.postMessage('Some text here', 'foobar');

您需要在登录网站上执行的操作是捕获post事件并填充输入字段,如下所示:

window.addEventListener('message', function(event) {
  var message = event.data;
  $('input.login').val(message);
});

我不熟悉Joomla结构,所以我只是在那里放了一些虚拟jQuery选择器。如果你不能只使用JavaScript,那么很可能你只需要在Android SDK / Java中找到一个方法来创建一个窗口元素并将postmessage发送到该窗口对象。这样你就可以在Java代码中传递窗口对象。