java and js and jsni
1. java通过jsni调用内部js
- Button button =newButton("java调用内部jsni的js方法");
- button.addClickHandler(newClickHandler() {
- @Override
- publicvoidonClick(ClickEvent event) {
- //gwt中java调用js方法
- execute("js方法被调用");
- }
- });
- /**
- * JSNI方法
- * @param id
- */
- publicstaticnativevoidexecute(String str)/*-{
- alert(str);
- }-*/;
2. 内部js通过jsni调用java方法
- Button button1 =newButton("内部jsni的js调用java方法");
- button1.addClickHandler(newClickHandler() {
- @Override
- publicvoidonClick(ClickEvent event) {
- //gwt中java调用js方法
- executeJs("java方法被调用");
- }
- });
- /**
- * JSNI方法, 里面调用java方法 javaAlert
- * @param id
- */
- publicstaticnativevoidexecuteJs(String str)/*-{
- @com.hw.client.TestCall::javaAlert(Ljava/lang/String;)(str);
- }-*/;
3.gwt中java方法调用外部js
在gwt工程的index.html中加入外部方法
- <mce:script language="JavaScript"><!--
- function callOutJs(str){
- alert('此处是外部js方法:'+ str);
- }
- // --></mce:script>
然后在onModuleLoad中java方法进行调用
- Button button2 =newButton("JAVA调用外部js");
- button2.addClickHandler(newClickHandler() {
- @Override
- publicvoidonClick(ClickEvent event) {
- //gwt中java调用js方法
- callOutJS("外部js被调用");
- }
- });
- /**
- * JSNI方法 调用外部js方法
- * @param id
- */
- publicstaticnativevoidcallOutJS(String str)/*-{
- $wnd.callOutJs(str);
- }-*/;
4. 外部js调用gwt的java方法
在onModuleLoad方法中调用 outJsCallGwt();
outJsCallGwt方法为
- /**
- * 需要被调用的js方法
- * @param id
- */
- privatestaticnativevoidoutJsCallGwt()/*-{
- $wnd.outJsCallGwt = function (str) {
- alert("此处是gwt:"+ str);
- };
- }-*/;
在index.html中加入按钮以调用
- <button οnclick="outJsCallGwt('外部按钮被点击')">点击</button>
现贴出application和index.html代码
- packagecom.hw.client;
- importcom.google.gwt.core.client.EntryPoint;
- importcom.google.gwt.event.dom.client.ClickEvent;
- importcom.google.gwt.event.dom.client.ClickHandler;
- importcom.google.gwt.user.client.Window;
- importcom.google.gwt.user.client.ui.Button;
- importcom.google.gwt.user.client.ui.RootPanel;
- publicclassTestCallimplementsEntryPoint {
- publicvoidonModuleLoad() {
- Button button = newButton("java调用内部jsni的js方法");
- button.addClickHandler(newClickHandler() {
- @Override
- publicvoidonClick(ClickEvent event) {
- //gwt中java调用js方法
- execute("js方法被调用");
- }
- });
- Button button1 = newButton("内部jsni的js调用java方法");
- button1.addClickHandler(newClickHandler() {
- @Override
- publicvoidonClick(ClickEvent event) {
- //gwt中java调用js方法
- executeJs("java方法被调用");
- }
- });
- Button button2 = newButton("JAVA调用外部js");
- button2.addClickHandler(newClickHandler() {
- @Override
- publicvoidonClick(ClickEvent event) {
- //gwt中java调用js方法
- callOutJS("外部js被调用");
- }
- });
- RootPanel.get().add(button);
- RootPanel.get().add(button1);
- RootPanel.get().add(button2);
- outJsCallGwt();
- }
- /**
- * JSNI方法 调用外部js方法
- * @param id
- */
- publicstaticnativevoidcallOutJS(String str)/*-{
- $wnd.callOutJs(str);
- }-*/;
- /**
- * JSNI方法
- * @param id
- */
- publicstaticnativevoidexecute(String str)/*-{
- alert(str);
- }-*/;
- /**
- * JSNI方法, 里面调用java方法 javaAlert
- * @param id
- */
- publicstaticnativevoidexecuteJs(String str)/*-{
- @com.hw.client.TestCall::javaAlert(Ljava/lang/String;)(str);
- }-*/;
- /**
- * 被js方法调用
- * @param id
- */
- publicstaticvoidjavaAlert(String str){
- Window.alert(str);
- }
- /**
- * 需要被调用的js方法
- * @param id
- */
- privatestaticnativevoidoutJsCallGwt()/*-{
- $wnd.outJsCallGwt = function (str) {
- alert("此处是gwt:"+ str);
- };
- }-*/;
- }
- <!doctype html>
- <html>
- <head>
- <metahttp-equiv="content-type"content="text/html; charset=UTF-8">
- <linktype="text/css"rel="stylesheet"href="TestCall.css"mce_href="TestCall.css">
- <title>Web Application Starter Project</title>
- <mce:scriptlanguage=JavaScript><!--
- function callOutJs(str){
- alert('此处是外部js方法:'+ str);
- }
- // --></mce:script>
- <mce:scripttype="text/javascript"language="javascript"src="testcall/testcall.nocache.js"mce_src="testcall/testcall.nocache.js"></mce:script>
- </head>
- <body>
- <!-- OPTIONAL: include this if you want history support -->
- <iframesrc="javascript:''"mce_src="javascript:''"id="__gwt_historyFrame"tabIndex='-1'style="position:absolute;width:0;height:0;border:0"></iframe>
- <!-- RECOMMENDED if your web app will not function without JavaScript enabled -->
- <noscript>
- <divstyle="width: 22em; position: absolute; left: 50%; margin-left: -11em; color: red; background-color: white; border: 1px solid red; padding: 4px; font-family: sans-serif">
- Your web browser must have JavaScript enabled
- in order for this application to display correctly.
- </div>
- </noscript>
- <h1>Web Application Starter Project</h1>
- <tablealign="center">
- <tr>
- <tdcolspan="2"style="font-weight:bold;"mce_style="font-weight:bold;">Please enter your name:</td>
- </tr>
- <tr>
- <buttononclick="outJsCallGwt('外部按钮被点击')">点击</button>
- <tdid="nameFieldContainer"></td>
- <tdid="sendButtonContainer"></td>
- </tr>
- <tr>
- <tdcolspan="2"style="color:red;"mce_style="color:red;"id="errorLabelContainer"></td>
- </tr>
- </table>
- </body>
- </html>
备注: 以上html代码中<mce:script 应该为<script 由于csdn代码编辑器自动改变了值
- <scriptlanguage=JavaScript>
- function callOutJs(str){
- alert('此处是外部js方法:'+ str);
- }
- <script>
java and js and jsni相关推荐
- return true Java_[Java教程]js中return,return true,return false的用法及区别
[Java教程]js中return,return true,return false的用法及区别 0 2015-11-16 23:00:03 1.语法及返回方式 ①返回控制与函数结果 语法为:retu ...
- java中刷新页面的js,[Java教程]js页面刷新之实现框架内外刷新(整体、局部)
[Java教程]js页面刷新之实现框架内外刷新(整体.局部) 0 2016-10-12 12:00:56 这次总结的是框架刷新: 框架内外的按钮均可以定义网页重定向, 框架内部页面的按钮可以实现局部刷 ...
- java创建node类型数据类型_[Java教程]js DOM Node类型
[Java教程]js DOM Node类型 0 2015-12-18 16:00:08 DOM(文档对象模型)是针对HTML和 DOM可以将任何HTML或 以下面为例: My article Hell ...
- java与js交互,相互调用传参
随着前端技术的发展与H5的广泛使用,移动端采用native+h5的方式越来越多了,对于Android来说就涉及到java与js的交互,相互调用传参等.下面就来看一下java与js交互的简单demo. ...
- android java 调用js,Android中Java和JavaScript交互实例
Android提供了一个很强大的WebView控件用来处理Web网页,而在网页中,JavaScript又是一个很举足轻重的脚本.本文将介绍如何实现Java代码和Javascript代码的相互调用. 如 ...
- JavaFX中WebView的java与JS代码互相调用
java代码 package main;import javafx.application.Application; import javafx.beans.value.ObservableValue ...
- java 调用 js性能_太快了,太变态了:什么会影响Java中的方法调用性能?
java 调用 js性能 那么这是怎么回事? 让我们从一个简短的故事开始. 几周前,我提议对Java核心libs邮件列表进行更改 ,以覆盖当前final一些方法. 这刺激了一些讨论主题-其中之一是其中 ...
- java js跳出循环_[Java教程]js循环的总结
[Java教程]js循环的总结 0 2016-10-07 15:00:14 js原生的循环有两种,一般的for循环和for...in循环.还有一种常用jQuery.each()循环. 一. js原生循 ...
- java 返回js_如何基于java或js获取URL返回状态码
这篇文章主要介绍了如何基于java或js获取URL返回状态码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参fgLAeaGAH考下 描述:使用java或者 ...
最新文章
- 未处理的异常: 0xC0000235: 由句柄所调用的 NtClose 已使用 NtSetInformationObject 以防止关闭。...
- STM32调试过程中,读保护,写保护造成的无法擦写芯片问题的解决办法和相关讨论
- HDMI视频光端机传输故障如何调试?
- eclipse java ui,Eclipse Forms筹划漂亮UI之高级组件[Java编程]
- frp ---- golang编写的内网穿透工具简介
- 小米手机困境,米粉伤心,黄牛伤钱
- 手机恶意软件激增,使用代码签名证书防范恶意侵害
- 推荐腾讯最新重磅开源项目!
- POJ-2031-Building a Space Station
- html语言星号,DIV+CSS 星号*
- python做var模型_在Python中使用pandas statsmodels的VAR模型
- 【Linux】bert-base-cased 不在缓存需要从 s3 上下载的问题
- 《自控》学习笔记一——自动控制的一般概念(一)
- Fedora的U盘无法格式化
- 今日金融词汇---为什么股票前面会有个DR
- html5播放mp4视频代码
- (完整源码)GPS系统源码,GPSBDpro——SIM卡状态查询
- 【Cocos2d-x 3.x】 动作类Action源码分析
- System.Drawing.Color的颜色对照表
- 静态方法和非静态方法的区别JAVA
热门文章
- 小米手机5完美卡刷开发版获得ROOT超级权限的教程
- 力扣LeetCode刷题心得之Python 找到最接近 0 的数字
- 中兴c600olt数据配置_中兴OLT开局数据配置、工程规范、版本升级介绍.ppt
- CVE-2021-4034 Pkexec LPE原理精析
- 在manjaro中开启多VLAN,配置永久静态IP,使用systemd-networkd配置
- 记录一次与autorun.inf病毒的较量
- 用Java写最简易版的银行系统
- HTTP live streaming 媒体流架构
- VOC和COCO数据集的介绍和转换
- 数据库系统概论(第五版) 王珊 第二章课后习题答案