iFrame 内的 cordova 回调

2024-02-25

我使用 cordova 和 nanohttpd 创建了一些 Android Web 应用程序。主页是通过 localhost url 从 nanohttp 加载的。主页包含一个 iFrame,它从与主页相同的域(localhost)加载一些页面。

下面的代码是从 iFrame 调用的:

document.addEventListener("deviceready", function(){
    cordova.exec(function(response) {           
        self.doSomething(response);
    },function(error) {
        alert(JSON.stringify(error));
    },"thePlugin","showMap", param);}, false);

现在这是我的问题:iframe 中的 cordova.exec 能够调用 Java 插件并显示地图。但它无法找到 javascript 回调函数。是否可以在 iFrame 内触发回调函数?如果可以的话,如何实现?


是的,这很有可能。

您的问题是由主窗口和 iframe 窗口之间的冲突引起的。

请参考这个链接:https://github.com/phonegap/phonegap/wiki/iFrame-Usage https://github.com/phonegap/phonegap/wiki/iFrame-Usage

我已经使用cordova插件联系android成功实现了这一点。

为了使其成为可能,您需要执行以下操作:

  1. 使用以下命令创建父窗口和子窗口/iframe 之间的通信发布消息。父母和孩子互相倾听。
  2. 将消息从子/iframe 发送/触发到父级以调用 cordova 插件。
  3. 调用 cordova 插件父窗口.
  4. 创建全局函数 in 父窗口被称为从科尔多瓦代码/侧面(安卓中的Java)。
  5. 找出cordova中的java文件(调用回调函数并解析返回结果)。线索:callbackContext.success(参数);。从这里,我们需要调用全局函数在父窗口中创建。
  6. 致电全局函数从 cordova.java 文件在父窗口中创建。下面是java代码调用js代码的片段:

你的网络视图.loadUrl("javascript:函数名(来自cordova的参数结果)");

  1. 使用 postMessage 将父级中获取的消息发送回 iframe/子级。

这应该有效。如果您发现任何问题,请告诉我。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

iFrame 内的 cordova 回调 的相关文章

  • JavaScript 中的凯撒密码

    我正在尝试编写一个程序来解决javascript中的以下问题 写在本段下面 我不知道为什么我的代码不起作用 有人可以帮助我吗 我是 JavaScript 新手 这是一个免费的代码训练营问题 现代常见的用法是 ROT13 密码 其中字母的值移
  • 无法使用 jQuery 添加两个小数

    我试图将两个小数值相加 但返回的总和是纯整数 怎么了 我找不到它 欢迎任何帮助 jQuery delivery method ship select change function var cost jQuery this val jQue
  • 如何禁用向左滚动?

    I got a div 元素 parent 包含多个子元素 item 我想启用滚动父元素一个方向 left OR正确的 否则什么都不会发生 看我的代码 parent scroll function gt gt gt scroll event
  • 如何使用jsPDF设置图像以适合页面宽度?

    有什么办法可以解决这个问题吗 我尝试以毫米为单位设置宽度和高度 如何将其设置为全角 您可以获取 PDF 文档的宽度和高度 如下所示 var doc new jsPDF p mm a4 var width doc internal pageS
  • EmberJS:如何为 ember-data RESTAdapter 中的模型提供特定的 URL?

    问题一 如果我有一个名为 Company 的余烬数据模型 我如何告诉它点击 businesses and businesses id而是检索记录 有没有办法指定给定模型的 url 更好的是 像 BackboneJS 一样 我可以在运行时计算
  • 改变换行行为

    我可以在 TextView 中使用 Spannable 创建具有不同外观 下划线 删除线等的跨度 我怎样才能做同样的事情来改变换行行为 特别是 我不希望电子邮件地址在中间换行 我希望它像一个单词一样 I tried 包裹在一起跨度 http
  • IllegalStateException:无法更改片段的标签,以前是 android:switcher,现在是 android:switcher

    我的活动使用TabLayout ViewPager 这里的选项卡和页面的数量是动态的 具体取决于从服务器获取的数据 崩溃是通过 Crashlytics 报告的 我无法复制它 我的活动代码 Override protected void on
  • 在 WebView 中打开 PDF 文件

    大约 2 天 我尝试在我的自定义中打开 PDF 文件WebvView 这是我的WebView code import android app AlertDialog import android app ProgressDialog imp
  • libgdx SpriteBatch 渲染到纹理

    是否可以使用 libGdx 适用于 Android 桌面的 Java 引擎 中的 SpriteBatch 渲染到纹理 如果是这样 怎么办 基本上我想将所有内容渲染到 512 x 256 纹理的 320 x 240 区域 然后缩放区域以适合屏
  • ES6 模板文字可以在运行时替换(或重用)吗?

    tl dr 是否可以制作可重用的模板文字 我一直在尝试使用模板文字 但我想我就是不明白 现在我感到沮丧 我的意思是 我想我明白了 但 它 不应该是它的运作方式 或者它应该如何实现 它应该变得不同 我看到的所有示例 甚至标记模板 都要求 替换
  • 出于安全目的,您是否有理由不执行自己的算法来打乱 ID?

    我计划实现我自己的非常简单的 哈希 公式 为具有多个用户的应用程序添加一层安全性 我目前的计划如下 用户创建一个帐户 此时后端会生成一个 ID ID 通过公式运行 假设 ID 57 8926 36 7 或同样随机的东西 然后 我将新的用户
  • “x modulo y”的结果是什么?

    引用 ECMAScript 规范第 5 2 节 符号 x modulo y y 必须是有限且非零 计算 值 k 与 y 具有相同的符号 或零 使得 abs k 因此 如果 y 为正 则 x modulo y 的结果 k 为正 无论 x 的符
  • jQuery 倒计时插件 - 只显示非零周期

    我正在使用 jQuery 倒计时插件编写倒计时 我只希望它显示活动 非零 周期 例如代替 剩余时间 0 天 0 小时 13 分 20 秒 它应该只显示 13 分 20 秒 我的代码是 countdown countdown expiryUr
  • Android JobScheduler 每天只运行一次

    我检查了 JobScheduler API 它可以从 Android API 级别 21 开始使用 我想安排一个需要互联网并且每天仅运行一次或可选每周运行一次的任务 如果成功执行 我没有找到关于这种情况的例子 有人能帮我吗 谢谢 针对您的问
  • 将数组数组的字符串转换为 Javascript 数组数组的优雅方法?

    我有一个 ajax 请求 它返回一个值列表 如下所示 5 5 5 6 15 15 7 13 12 我需要它是一个带有数字的 javascript 数组 5 5 5 6 15 15 7 13 12 我尝试将 和 替换为 然后用 分割和 for
  • 如何在给定的纬度和经度处使用标记/覆盖项目启动地图意图?

    我有一个纬度和经度 我想打开以该点为中心的谷歌地图 所以我使用以下代码 Intent intent new Intent android content Intent ACTION VIEW Uri parse geo lat lng st
  • 使用 JQueryUI Autocomplete 和 Meteor 的规范方法

    使用 Meteor 我想了解使用 JQuery UI 自动完成处理大量服务器端数据的最有效方法 我有两个工作提案 想听听关于差异的意见 以及是否有更好的方法来做同样的事情 使用发布 订阅 Server Meteor publish auto
  • Javascript 最佳实践,为什么使用逗号来链接函数/变量声明?

    我一直在为 jQuery jQueryLog 开发一个插件 以允许调试链选择器和返回值 如果你想检查一下 你可以这样做here http www jquerylog com 这已经是第二个版本了 第一个版本实际上是经过编辑的 jQuery
  • Android,Volley请求,响应阻塞主线程

    使用 Volley 处理较大响应时会发生一些不好的事情 String url AppHelper DOMAIN service pages profile update json this infoTextView setText getS
  • 在哪里放置资源特定逻辑

    您能帮我考虑在 AngularJS 中将资源 服务 特定的业务逻辑放置在哪里吗 我觉得在我的资源上创建一些类似模型的抽象应该很棒 但我不确定如何做 API调用 gt GET customers 1 lt first name John la

随机推荐

  • 防止目标数据库处于恢复模式时出现错误(sql准备)

    我有一个每晚运行的存储过程 它从链接服务器中提取一些数据并将其插入到运行 sql 代理作业的服务器上的表中 在运行 INSERT 语句之前 该过程会检查链接服务器上的数据库是否处于联机状态 STATE 0 如果不是 则不运行 INSERT
  • Swift 5:什么是“转义闭包捕获变异的‘self’参数”以及如何修复它

    大家好 我正在尝试制作一个简单且可重用的 Swift 网络层 也许这不是在视图中循环返回数据的最佳方法 但在我尝试将返回的 Api 数据在 SwiftUI 视图中循环后 我收到错误 Escaping closure captures mut
  • 将 Django Rest Framework 与序列化器一起使用时出现 AttributeError

    我正在关注位于的教程here https godjango com 41 start your api django rest framework part 1 使用Django 休息框架 http www django rest fram
  • 如何添加执行 Django 管理操作来更改表单页面的自定义按钮?

    我已经为我的模型定义了一个自定义管理操作 它按预期完美运行 我还研究了向管理员更改表单页面添加按钮的多种方法 我缺少的唯一步骤是如何使更改表单页面中的按钮使用当前对象执行我的自定义管理操作 目标是允许管理员单独检查每个对象并对它们执行操作
  • SwipeRefreshLayout + 另一个视图

    我的布局设置如下
  • 有没有办法防止 JavaScript/jQuery 中的元素失去焦点?

    focusout blur 事件仅在元素失去焦点后触发 顺便说一句 我更喜欢不使用插件来做到这一点 是的 你可以使用这个
  • Firebase 扇出 - 最具成本效益的方法?

    我知道这个问题可能已被多次提出 但我已阅读了大多数可用的问题 但没有找到任何可以完全帮助回答我的问题的问题 正如 Firebase 团队提出的 扇出技术是确保快速数据读取的推荐方法 但会带来数据复制的成本 我知道这个问题是主观的 取决于应用
  • 您最喜欢的 SVN Web 应用程序部署工作流程是什么?

    我们目前使用的部署设置有些复杂 涉及远程 SVN 服务器 用于 DEV STAGE 和 PROD 的 3 个 SVN 分支 通过补丁等在它们之间提升代码 我想知道在小型开发团队的情况下您使用什么进行部署 主干用于开发 分支 生产 用于生产
  • 将 MultiIndex 列合并到 pandas 数据框中的单个索引

    在我的代码中 我将 2 个数据库集成到 1 个数据库中 问题是当我向数据库中再添加一列时 结果与预期不符 使用Python 2 7 code import pandas as pd import pandas io formats exce
  • laravel 会话返回 null 尽管设置它

    只是原生 php 中的一个简单函数 protected function some function session start if isset SESSION a SESSION a some value return true els
  • 如何让我的班级充满活力?

    我想要一个带有一个附加属性的字符串 比如说是以红色还是绿色打印它 子类化 str 不起作用 因为它是不可变的 我看到了它的价值 但它可能很烦人 多重继承有帮助吗 我从来没有用过那个 仅继承 object 并使用 self value str
  • 什么可能导致 imagecolorsforindex() 出现“颜色索引超出范围”错误?

    当对一大堆 JPG PNG 和 GIF 文件进行补丁大小调整时 PHP 意外地死机 并显示以下错误消息 imagecolorsforindex function imagecolorsforindex 颜色索引 226 超出范围 相关代码片
  • AspectJ - 更改方法参数的值

    我想要这样的东西 public void doSomething ReplaceFooBar String myString ReplaceFooBar是我的自定义注释 其值应为myString并做一个replaceAll在方法开始执行之前
  • PipEnv:如何处理本地安装的 .whl 包

    我正在使用 PipEnv 设置一个项目 以及一些我需要从预编译的二进制文件安装的包 在以前的项目中 我只是将某些本地文件夹中的 whl 文件安装到我的环境中 但这似乎会导致锁定文件出现问题 如果其他人尝试从存储库安装 因为 pipfile
  • 使用 -NoExit 启动 PowerShell 不起作用

    需要在 PowerShell 中启动多个作业 但它们应该位于不同的会话中 因此 要启动一个 可以使用 Start Process powershell ArgumentList command Get Process noexit nopr
  • 在 woocommerce 结帐页面自定义字段中添加日期

    我正在尝试在 woocommerce 结帐页面中添加自定义选择选项 它正在添加额外的字段 但我想在选择选项的值中添加日期 有什么解决办法吗 这是我在主题 function php 中添加的代码 today new DateTime tomo
  • tfs:如何解锁更改

    我最初编辑了一个文件 该文件进行了结帐 我收到了一台新电脑 现在我想编辑该文件 我不关心原始编辑 TFS 报告另一个用户对该文件具有独占锁定 它实际上不是另一个用户 而是我 但机器不同 因此工作空间不同 我尝试使用以下命令通过 tf 命令行
  • 在海量数据集上学习决策树

    我正在尝试使用 MATLAB 从巨大 即无法存储在内存中 数据集构建二元分类决策树 本质上 我正在做的是 收集所有数据 Try out n数据的决策函数 选出最佳决策函数 https stackoverflow com questions
  • 为不受支持的语言选择本地化

    我有 en 和 ru 语言的本地化 如果用户选择任何其他语言 fr de 我需要显示俄语本地化变体 我尝试将 info plist 中的 本地化本机开发区域 更改为 ru 俄语 但在使用不受支持的语言时 它始终显示英语 有相关问题 http
  • iFrame 内的 cordova 回调

    我使用 cordova 和 nanohttpd 创建了一些 Android Web 应用程序 主页是通过 localhost url 从 nanohttp 加载的 主页包含一个 iFrame 它从与主页相同的域 localhost 加载一些