首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >JS与JavaFX重装后的通信

JS与JavaFX重装后的通信
EN

Stack Overflow用户
提问于 2016-08-06 04:58:42
回答 1查看 158关注 0票数 0

我想从HTML上的javascript调用javafx函数。我执行以下操作(并且工作正常):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
JSObject win = (JSObject) webEngine.executeScript("window");
win.setMember("app", new MyController(this.webEngine));

URL url = getClass().getResource("page1.html");            
this.webEngine.load(url.toExternalForm());

在page1.html中,我可以使用app对象从MyController和JavaScript调用函数:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
app.hello();

然后,在某个时候,我会像这样更改显示页面:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
URL url = getClass().getResource("page2.html");            
this.webEngine.load(url.toExternalForm());

问题是,在page2.html中,我不能从MyController调用任何函数。我尝试重新创建对象应用程序(在页面更改之前和之后),但是它不起作用。

如何维护JS和JavaFX内部的交互?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-10 02:26:03

我找到了解决办法。加载新页面后,DOM将被替换,因此window对象也会发生变化。在上一页上创建的原始JSObject对象指向错误的window,因此JS无法调用其方法。每次重新加载页面时都需要创建一个新的JSObject对象。

要重新创建新的JSObject对象,必须确保页面已完全加载,因此:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
webEngine.getLoadWorker().stateProperty().addListener((obs, oldState, newState) -> {
    if (newState == State.SUCCEEDED) {
        JSObject win = (JSObject) webEngine.executeScript("window");
        win.setMember("app", new MyController(this.webEngine));
    }
});

URL url = getClass().getResource("page2.html");            
webEngine.load(url.toExternalForm());
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38804536

复制
相关文章
JavaFX 11 发布,与 JDK 拆分后的首个正式大版
JavaFX 11 发布了,JavaFX 是一个强大的图形和多媒体处理工具包集合,它允许开发者来设计、创建、测试、调试和部署富客户端程序,并且和 Java 一样跨平台。由于 JavaFX 库被写成了 Java API,因此 JavaFX 应用程序代码可以调用各种 Java 库中的 API,例如 JavaFX 应用程序可以使用 Java API 库来访问本地系统功能并且连接到基于服务器中间件的应用程序。JavaFX 可以自定义程序外观,CSS 将外观和样式与业务逻辑实现进行了分离,因此开发人员可以专注于编码工作。值得注意的是,从 JDK 11 开始,JavaFX 模块与 JDK 分开提供 。
Debian中国
2018/12/21
2.4K0
docker toolbox重装后的错误
//./pipe/docker-engine.exe无法访问 docker工具的bug,通过查看docker-machine env default配置
sofu456
2021/12/06
8630
docker toolbox重装后的错误
javafx的使用原理是什么?javafx与java有什么不同?
在生活中人们接触java比较多,很多人却不知道javafx是什么。javafx是一种编程语言,使用这种语言能够开发丰富的网络程序,目前javafx包括两种类别,一种是javafx脚本,另一种是javafx mobile(可以运行于手机等移动设备),在以后的发展中,javafx可能会拥有更多的作用。那么javafx的使用原理是什么?javafx与java有什么不同?
用户8739405
2021/07/02
4.8K0
Zsh 重装后 Node 环境找回
最新版的 oh-my-zsh 在 macOs Catalina 10.15.3 使用open ./ -a visual按下 Tab会触发 cpu 100 的情况,卸载了 oh-my-zsh 后导致原来的 nvm 和 node 命令失效。
上山打老虎了
2022/06/15
7680
重装Windows 10后常用软件的下载
近日重装了Windows 10,又新装了一堆常用软件。为节省以后的时间,写个小的PowerShell脚本,如下:
ZhangYang
2021/05/12
1K0
新装/重装git后的指令&链接到github
有些事情总是在所难免的,嗯,比如重装系统,作为学计算机的当然不用困扰重装系统这种事情喽,然而重装系统之后的开发环境确实让人头疼。有些软件你使用起来熟练了,但未必一定记得是怎么安装和配置的,比如git,emmmmm……写一篇mark一下吧。 安装git 下载地址 启动安装 配置git git config --global user.email "raphael_li@live.com" git config --global user.name "raphaelli" 配置ssh公钥链接ssh git自身
李郑
2018/03/06
2.1K0
objC与js通信实现--WebViewJavascriptBridge
场景   在移动端开发中,最为流行的开发模式就是hybmid开发,在这种native和h5的杂糅下,既能在某些需求中保证足够的性能,也可以在某些列表详情的需求下采用h5的样式控制来丰富内容。但是在大型产品的开发中,往往前端的职责不仅仅是h5的编写,还包括基本业务逻辑的实现,比如在h5页面中确定当前用户所在的城市(location),我们可以采用html5规范的Geolocation接口,但是更为通俗的做法是调用native的本地接口,因此这种常规的场景就涉及到了js和native层通信的问题,这在手淘开发中
欲休
2018/03/15
1.5K0
as3与node.js的socket通信
SocketManager最多在连接失败时,进行5次重连。建立socket连接代码:
meteoric
2018/11/16
9690
IIS修复IIS出现错误后完全重装的方法
有的时候IIS出现严重错误,比如metabase坏掉,又没有备份.... 一般的做法,直接在控制面板添加删除程序中卸载IIS重装。 这样并不是保险的做法,很多人在重装IIS后问题依旧。 所以建议在任何情况下都用以下步骤重新安装IIS: 复制代码 代码如下: 1、把IIS卸载。 2、把 %windir%\system32\inetsrv 删除。 3、把%windir%\iisX.log删除,X 是IIS版本。 4、把 \inetpub\ 目录删除。 (以上操作可以在安全模式中进行。) 5、重
习惯说一说
2019/07/10
4.3K0
JavaFX入门(四):JavaFX布局(一)
说道GUI编程一定要谈到布局,JavaFX内置了大量的布局控件提供给我们使用。其实,JavaFX的布局控件和界面元素控件都是继承自javafx.scene.layout.Region类。我们这里只看布局控件类。布局控件我们在界面上一般是看不到的,它一个容器用于放置其它可视的界面元素控件。(JavaFX在线API文档:JavaFX8 API Online) JavaFX布局控件的类图如下:
卡尔曼和玻尔兹曼谁曼
2019/01/22
12K1
JavaFX入门(四):JavaFX布局(一)
JavaFX入门(二):JavaFX和FXML
在我的JavaFXML系列博客第一篇《JavaFX入门(一):我的第一个JavaFX程序 》中我们用纯Java代码写了一个很简单的JavaFXML程序,这一节中我们使用FXML编写程序界面,然后用Java书写后台逻辑完成上一节中的程序,实现相同的功能。
卡尔曼和玻尔兹曼谁曼
2019/01/22
8.8K0
JavaFX入门(二):JavaFX和FXML
重装系统后oracle数据库还原_重装系统后管家婆数据库恢复
以下http://database.51cto.com/art/201011/233460.htm
全栈程序员站长
2022/11/03
9830
Nginx重装与平滑升级
第一步:停止Nginx软件 第二步:删除/usr/local/nginx文件夹 第三步:下载Nginx-1.16重新进行配置、编译以及安装 缺点:在重装升级的过程中,需要停止目前线上正在运行的业务!
刘銮奕
2020/04/26
2K0
腾讯云服务器重装系统后……
本文链接:https://lisz.me/tech/linux/tencent-down.html
zhonger
2022/10/28
10K0
JavaFX 简介
本文介绍了JavaFX技术,并基于JavaFX编写了一个简单的图形界面程序。通过使用JavaFX,可以大大简化Java应用程序的开发过程,提高开发效率。同时,JavaFX也提供了一些常用的设计器,如SceneBuilder,可以方便地创建JavaFX应用程序。
乐百川
2018/01/09
5.8K0
JavaFX 简介
JavaFx-Button
.button1 { -fx-font: 22 arial; -fx-base: #b6e7c9; }
shengjk1
2021/03/02
4.9K0
JavaFx-Button
JDK卸载与重装「建议收藏」
发现网上很多博文并没有完整的讲述如何卸载和重装jdk,自己在重装jdk的时候遇到很多问题,搜索很多博文,把内容整合起来,才解决问题,而且还有许多安装jdk,还要配置classpath环境变量,在jdk 1.5版本之后已经不需要配置。本篇博文详细记录重装jdk的过程。
全栈程序员站长
2022/09/07
4.7K0
JDK卸载与重装「建议收藏」
双系统重装win7后,修复grub
         大二以前一直都是在用windows编程,即使看到别人使用华丽丽的mac也不屑一顾,认为那只不过虚有其表而已,不可能用来工作。可是有一天看到同学使用的ubuntu以后,其界面,其速度,其方便,日渐让我厌恶windows,特别是连开一个eclipse都要卡住,连鼠标都不能动的时候。我决定,要装上windows+ubuntu的双系统,ubuntu确实很好,不仅是他的系统做得华丽而高效,而且连安装都高windows一筹,因为它可以直接从u盘启动,然后让用户边体验边安装,我们再也不用像安装windo
forrestlin
2018/05/23
6.5K0
TDH大数据平台的卸载与重装
前段时间写过一篇关于TDH 集群的许可证管理机制及TDH集群的卸载与安装d的博文:
数据社
2021/08/27
1K0
TDH大数据平台的卸载与重装
JS Bridge 通信原理
之前介绍了移动端开发的相关技术,这一篇主要是从 Hybrid 开发的 JS Bridge 通信讲起。
尹光耀
2022/03/22
4.9K0
JS Bridge 通信原理

相似问题

Javafx与JSSC串行通信

12

角JS柱后重装指令法

13

防止页面重装后重装

11

JavaFx场景与GWT-GWT的通信

10

重装不支持明文通信

55
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文