【问题标题】:Using postMessage() between Android and Website在 Android 和网站之间使用 postMessage()
【发布时间】:2015-03-29 08:52:01
【问题描述】:

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

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

打开的新窗口如下:

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

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

【问题讨论】:

    标签: javascript php android html joomla


    【解决方案1】:

    不确定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 代码中传递 window 对象。

    【讨论】:

    • 谢谢。我在目标端(Joomla)看不到任何 javascript。所有文件都在 php.ini 中。这就是为什么我不确定在哪里编写代码。我也不熟悉Joomla
    猜你喜欢
    • 2021-01-21
    • 1970-01-01
    • 2012-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-22
    • 1970-01-01
    • 2016-05-03
    相关资源
    最近更新 更多