从小程序调用 JS 在 Firefox 和 Chrome 中有效,但在 Safari 中无效

2024-01-21

我在小程序中有以下代码来调用一些 Javascript(这有点复杂,因为调用的 fn 从 divId 标识的 DOM 中获取一个对象,并在其上调用一个函数)。

@Override
public final void start() {
  System.err.println("start() method called");
  this.javascript = JSObject.getWindow(this);
  this.jsObjectDivId = getParameter("parent_div_id");
  this.initCallbackFnName = getParameter("init_callback");
  Object args[] = {this.jsObjectDivId, this.initCallbackFnName};
  System.out.print("Calling init_callback\n");
  this.javascript.call("callJS", args);
}

The callJS函数是:

window.callJS = function(divId, functionName, jsonArgString) {
  var args, obj;
  obj = $(divId).data('neatObject');
  args = eval(jsonArgString);
  return obj[functionName](args);
};

在 Firefox/Chrome 中divId and functionName参数包含有效的字符串,一切正常;在挂有指定 DIV 数据的对象上调用所需的函数。

在 Safari 中,divId and functionName参数均报告为JavaRuntimeObject值为true.

> divId
  JavaRuntimeObject
    true

是什么赋予了?


并非所有浏览器都完全支持 LiveConnect。特别是,在使用时,Safari 不会将 Java 字符串转换为探测器 JS 等效项call。在你的情况下你可以只使用eval在Applet端而不是call并放入带有参数的 JSON 字符串对象。就像是:

javascript.eval(callback + "({\"id\":\"" + id + "\",\" ... })")

基本上,您需要了解有效的 LiveConnect 的跨浏览器兼容子集。 我写了一篇博客文章来描述该子集:http://blog.aarhusworks.com/applets-missing-information-about-liveconnect-and-deployment/ http://blog.aarhusworks.com/applets-missing-information-about-liveconnect-and-deployment/

它附带了一个在浏览器中运行的 LiveConnect 测试套件:http://www.jdams.org/live-connect-test http://www.jdams.org/live-connect-test

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

从小程序调用 JS 在 Firefox 和 Chrome 中有效,但在 Safari 中无效 的相关文章

  • 总是使用 Final?

    我读过 将某些东西做成最终的 然后在循环中使用它会带来更好的性能 但这对一切都有好处吗 我有很多地方没有循环 但我将 Final 添加到局部变量中 它会使速度变慢还是仍然很好 还有一些地方我有一个全局变量final 例如android Pa
  • 如何解决 Typescript 构建中的错误“找不到模块 'jquery'”

    我目前在 ts 文件的顶部有这个import require jquery 我这样做是因为我试图在我的打字稿文件中使用 jquery 但我似乎无法编译它 因为它返回标题中所述的错误 我正在使用 ASP NET CORE 脚本文件夹 tsco
  • 在 HTML5 画布中,如何用我选择的背景遮盖图像?

    我试图用画布来实现这一点 globalCompositeOperation 但没有运气 所以我在这里问 这里有类似的问题 但我没有在其中找到我的案例 我的画布区域中有图层 从下到上的绘制顺序 画布底座填充纯白色 fff 用fillRect
  • 检查 jQuery 1.7 中是否存在基于文本的选择选项

    所以我有以下 HTML 片段
  • 如何在 javadoc 中使用“<”和“>”而不进行格式化?

    如果我写
  • Vuejs 2:去抖动不适用于手表选项

    当我在 VueJs 中反跳此函数时 如果我提供毫秒数作为原语 它就可以正常工作 但是 如果我将其提供为对 prop 的引用 它会忽略它 这是道具的缩写版本 props debounce type Number default 500 这是不
  • Eclipse Java 远程调试器通过 VPN 速度极慢

    我有时被迫离开办公室工作 这意味着我需要通过 VPN 进入我的实验室 我注意到在这种情况下使用 Eclipse 进行远程调试速度非常慢 速度慢到调试器需要 5 7 分钟才能连接到远程 jvm 连接后 每次单步执行断点 行可能需要 20 30
  • Java执行器服务线程池[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 如果我使用 Executor 框架在
  • 如何从终端运行处理应用程序

    我目前正在使用加工 http processing org对于一个小项目 但是我不喜欢它附带的文本编辑器 我使用 vim 编写所有代码 我找到了 pde 文件的位置 并且我一直在从 vim 中编辑它们 然后重新打开它们并运行它们 重新加载脚
  • 如何在桌面浏览器上使用 webdriver 移动网络

    我正在使用 selenium webdriver 进行 AUT 被测应用程序 的功能测试自动化 AUT 是响应式网络 我几乎完成了桌面浏览器的不同测试用例 现在 相同的测试用例也适用于移动浏览器 因为可以从移动浏览器访问 AUT 由于它是响
  • 编译器抱怨“缺少返回语句”,即使不可能达到缺少返回语句的条件

    在下面的方法中 编译器抱怨缺少退货声明即使该方法只有一条路径 并且它包含一个return陈述 抑制错误需要另一个return陈述 public int foo if true return 5 鉴于Java编译器可以识别无限循环 https
  • 在 Javascript 中连接空数组

    我正在浏览一些代码 我想知道这有什么用处 grid push concat row 根据我的理解 它等同于 grid push row 为什么要大惊小怪 连接 你想使用 concat当您需要展平数组并且没有由其他数组组成的数组时 例如 va
  • 在 Shopify 商店中嵌入 Vue 组件

    在产品页面中 我尝试显示自定义 Vue 组件 为简洁起见 该组件根据给定的产品 ID 显示 Firebase 数据库中的一些信息 我最初尝试将其制作为 Shopify 应用程序 以便我可以访问他们的 API 我实现了 OAuth 并且可以检
  • 捕获的图像分辨率太大

    我在做什么 我允许用户捕获图像 将其存储到 SD 卡中并上传到服务器 但捕获图像的分辨率为宽度 4608 像素和高度 2592 像素 现在我想要什么 如何在不影响质量的情况下获得小分辨率图像 例如我可以获取或设置捕获的图像分辨率为原始图像分
  • 有没有办法为Java的字符集名称添加别名

    我收到一个异常 埋藏在第 3 方库中 消息如下 java io UnsupportedEncodingException BIG 5 我认为发生这种情况是因为 Java 没有定义这个名称java nio charset Charset Ch
  • 带参数的事件监听器

    我想将参数传递给 JavaScript 中的事件侦听器 我已经找到了解决方案 但我无法理解它们为什么或如何工作以及为什么其他解决方案不起作用 我有 C C 背景 但是 Javascript 函数的执行有很大不同 您能否帮助我理解以下示例如何
  • 使用 MongoDB 和 Nodejs 插入和查询日期

    我需要一些帮助在 mongodb 和 nodejs 中按日期查找记录 我将日期添加到抓取脚本中的 json 对象 如下所示 jsonObj last updated new Date 该对象被插入到 mongodb 中 我可以看到如下 la
  • Jquery - 选择选项后如何获取选项的特定数据类型?

    我将直接跳到标记 然后解释我想要做什么 HTML 选择选项
  • 如何确定所有角度2分量都已渲染?

    当所有 Angular2 组件完成渲染时 是否会触发一个角度事件 For jQuery 我们可以用 function 然而 对于 Angular2 当domready事件被触发 html 只包含角度组件标签 每个组件完成渲染后 domrea
  • Vue.js[vuex] 如何从突变中调度?

    我有一个要应用于 json 对象的过滤器列表 我的突变看起来像这样 const mutations setStars state payload state stars payload this dispatch filter setRev

随机推荐

  • Python 如何从 .egg 文件导入模块?

    我怎样才能打开 init pyc here gt gt gt import stompservice
  • 如何使用 php Excel 生成漂亮的 PDF?

    我正在使用最新的 PHPExcel 版本 我认为是 7 7 我能够生成我的Excel 我必须使用 tcpdf 生成 pdf 版本 这里别无选择 但结果是丑陋且过大 请参阅 2012 000012 的巨大字体大小 在 Excel 中为 11
  • PHP next() 不工作

    我正在尝试使用 PHP 制作一个画廊 图像加载正确 但下一个和上一个按钮似乎不起作用 单击图片 1 下的 下一步 您将看到图片 3 但是单击 图片 3 将您带到图片 2 这是正确的 我应该如何更改我的代码以使两者都按顺序进行
  • 在 Play 2.4 with DI 中,如何在“Secured”特征中使用服务类?

    这是一个Play 文档中的授权示例 https www playframework com documentation 2 0 4 ScalaSecurity Authorization 版本 2 0 4 我试图找到此文档的更新版本 但找不
  • 在 IntelliJ 中使用 Scala 工作表很困难

    我正在学习 Scala 函数式编程原理课程 但我在 IntelliJ 中使用 Scala Worksheets 进行快速测试时遇到了很多问题 例如 我建立了一个新的 Scala 项目 在其中创建了一个名为的包对象lecture5 它在文件中
  • 在 R 中下载 Kaggle zip 文件

    我正在尝试直接从 R 代码本身的 Kaggle 空间下载 zip 文件 不幸的是 它的效果并不好 这是发生的事情 对于旧金山犯罪数据集 请访问https www kaggle com c sf crime data https www ka
  • Xcode pbxstrings 文件的用途是什么?

    我有一个 Xcode 项目 需要更改它构建的产品的名称 我仔细地浏览了项目文件 并认为我已经做出了所有可能的更改 最后一步是 grep 项目文件夹中的所有文件以查找旧名称的出现 结果很干净 但是在构建之后 grep 发现一个文件包含多次出现
  • 需要帮助为 SpreadsheetApp 创建 GMAIL Pub/Sub 通知服务(Google Apps 脚本)

    我希望我不必重新发布这个问题 但我的老板将这个问题推到了高优先级 我需要帮助来解决这个问题 我正在尝试使用 GAS 脚本从我的 GSuite 域上的地址提取发布 订阅通知 目前 我正在我的域上进行测试 基本上 我正在尝试完成所有这些材料中描
  • Windows 10、DPI 缩放和全屏

    我有一个应用程序 Windows 8 1 中的 PROCESS PER MONITOR DPI AWARE 和 Windows 10 v1703 中的 DPI AWARENESS CONTEXT PER MONITOR AWARE V2 我
  • 如何查找接口中方法的索引?

    如何找到接口中定义的过程 函数的索引 可以用RTTI来实现吗 首先我们需要枚举接口的方法 不幸的是这个程序 APPTYPE CONSOLE uses System SysUtils System Rtti type IMyIntf inte
  • Zend 框架窗体装饰器

    我正在尝试使用装饰器获得以下布局
  • 检查组合框值是否为空

    我创建了一个包含三个值的组合框 我希望在未选择任何项目时打开一个消息框 所以我尝试了以下操作 if comboBox1 SelectedItem null MessageBox Show Please select a value retu
  • asp网站项目中多目标框架的问题

    我开发了一个针对 NetStandard 和 NetFramework 的 C 库框架 这是通过编辑 csproj 文件 将 TargetFramework 更改为 TargetFramework 来完成的s并将它们都添加到标签中
  • 如何使 CSS3 悬停过渡仅运行一次而不是在用户“取消悬停”后“倒回”?

    我有一些 CSS 见下文 我想当用户将鼠标悬停在外部字段上时 使内部 div kitty 在屏幕上平移 这工作正常 但是 正如您所期望的 当用户将鼠标从外部字段移开时 动画会 倒带 然后 当然 如果用户再次悬停 动画就会重播 我试图弄清楚如
  • 错误的 UTF-8 无 BOM 编码

    我使用 Notepad 将所有文件转换为没有 BOM 编码的 UTF 8 我对 BOM 不再有任何问题 但是没有 BOM 编码的 UTF 根本不起作用 就好像我的网站是用 ANSI 编码的一样 所有特殊字符都显示为 或 造成这种情况的原因是
  • JSF 2.0 Facelets 嵌套模板继承

    是否可以定义从 Facelet 中的其他模板继承的模板 像这样的东西 GlobalTemplate xhtml users UsersTemplate xhtml template GlobalTemplate xhtml users vi
  • 超时超过 3 小时 Automation Runbook Azure

    大家好 我有一个运行手册要启动 但运行 分区过程 需要 3 个多小时 因此 它在完成之前停止了 我想知道是否有办法超过3小时的限制 我听说过混合运行手册 但我不确定它如何解决我的问题 您知道是否还有其他解决方案 多谢 如果您想坚持使用 Az
  • 是否可以通过包含在另一个数组中来过滤 angular.js?

    所以如果我有一个数组 scope letters id a id b id c 还有另一个数组 scope filterBy b c d 我想要一些 ng repeat 来仅通过 filterBy 中出现的项目来过滤 scope lette
  • 如何找到我的闪亮应用程序的现有 CSS?

    我对 css 很陌生 所以也许我问了错误的问题 但是当我使用 navbarPage 时 我是否将 css 添加到我的网络应用程序中 当我添加自己的 css 来添加一些文本和背景颜色时 它删除了导航栏 我的选项卡现在只是主标题下方的超链接 为
  • 从小程序调用 JS 在 Firefox 和 Chrome 中有效,但在 Safari 中无效

    我在小程序中有以下代码来调用一些 Javascript 这有点复杂 因为调用的 fn 从 divId 标识的 DOM 中获取一个对象 并在其上调用一个函数 Override public final void start System er