双非渣本Web前端四年磨一剑,鸿蒙-webview的使用和JS交互(附源码,web前端开发项目

// 配置是否支持访问DataAbility资源,默认为true

webConfig.setDataAbilityPermit(true);

webview.load(URL_LOCAL);

4. 实现应用与WebView中的Web页面间的通信


本教程以本地Web页面"resources/rawfile/test.html"为例介绍如何实现应用与WebView中的Web页面间交互。

首先需要对WebConfig进行配置,使能WebView与Web页面JavaScript交互的能力,示例代码如下:

// 配置是否支持JavaScript,默认值为false

webConfig.setJavaScriptPermit(true);

1.应用调用Web页面

在"resources/rawfile/test.html"中编写callJS方法,待应用调用,示例代码如下:

在"slice/MainAbilitySlice.java"中实现应用对JavaScript的调用,示例代码如下:

webview.executeJs(“javascript:callJS(‘这是来自JavaSlice的消息’)”, msg -> {

// 在这里处理Js的方法的返回值

});

我们可以通过setBrowserAgent方法设置自定义BrowserAgent对象,以观测JavaScript事件及通知等,通过复写onJsMessageShow方法来接管Web页面弹出Alert对话框的事件,示例代码如下:

webview.setBrowserAgent(new BrowserAgent(this) {

@Override

public boolean onJsMessageShow(WebView webView, String url, String message, boolean isAlert, JsMessageResult result) {

LogUtil.info(TAG,"BrowserAgent onJsMessageShow : " + message);

if (isAlert) {

// 将Web页面的alert对话框改为ToastDialog方式提示

new ToastDialog(getApplicationContext()).setText(message).setAlignment(LayoutAlignment.CENTER).show();

// 对弹框进行确认处理

result.confirm();

return true;

} else {

return super.onJsMessageShow(webView, url, message, isAlert, result);

}

}

});

2.Web页面使用JavaScript调用应用

在"resources/rawfile/test.html"中编写按钮,当按钮被点击时实现JavaScript对应用的调用,示例代码如下:

调用Java方法

在"slice/MainAbilitySlice.java"中实现应用对JavaScript发起的调用的响应,示例代码如下:

private static final String JS_NAME = “JsCallJava”;

webview.addJsCallback(JS_NAME, str -> {

// 处理接收到的JavaScript发送来的消息,本教程通过ToastDialog提示确认收到Web页面发来的消息

new ToastDialog(this).setText(str).setAlignment(LayoutAlignment.CENTER).show();

// 返回给JavaScript

return “Js Call Java Success”;

});

总结


通过上面的完整代码,我们已经完成了webbiew的基本使用

仓库地址:https://github.com/ITmxs/hm_webview

第二步删除默认代码


打开index.hml文件,里面有默认代码如下:

山茶

第三步,开始学习


首先将图片放到common文件夹下面的images里面,注意,我的图片文件名是flutter.png,

从上面布局效果图可以看到,界面主要由image组件和text组件组成,我们现在index.html中添加image组件和text组件,并添加对应的class,用于设置组件的显示效果,代码如下:

translate

rotate

rotateY

scale

opacity

第四步,为页面设计样式


在这个任务中,我们将一起为任务二中写好的页面添加样式,上面所有的组件都定义了class属性,它对应的样式都定义在index.css中,有关css更多的知识可以参考css语法参考。

这部分定义了整个页面中各个组件的样式。在index.css中先添加如下代码:

.container {

background-color: #F8FCF5;

flex-direction: column;

justify-content: center;

align-items: center;

}

.img {

margin-top: 10px;

height: 100px;

width: 100px;

animation-timing-function: ease;

animation-duration: 2s;

animation-delay: 0s;

animation-fill-mode: forwards;

animation-iteration-count: infinite;

}

.text {

font-size: 20px;

}

.img-translate {

animation-name: translateAnim;

}

.img-rotate {

animation-name: rotateAnim;

}

.img-rotateY {

animation-name: rotateYAnim;

}

.img-scale {

animation-name: scaleAnim;

}

.img-mixes {

animation-name: mixesAnim;

}

.img-opacity {

animation-name: opacityAnim;

}

/从-100px平移到100px/

@keyframes translateAnim {

from {

transform: translate(-100px);

}

to {

transform: translate(100px);

}

}

/从0°旋转到360°/

@keyframes rotateAnim {

from {

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注前端)
img

最后

javascript是前端必要掌握的真正算得上是编程语言的语言,学会灵活运用javascript,将对以后学习工作有非常大的帮助。掌握它最重要的首先是学习好基础知识,而后通过不断的实战来提升我们的编程技巧和逻辑思维。这一块学习是持续的,直到我们真正掌握它并且能够灵活运用它。如果最开始学习一两遍之后,发现暂时没有提升的空间,我们可以暂时放一放。继续下面的学习,javascript贯穿我们前端工作中,在之后的学习实现里也会遇到和锻炼到。真正学习起来并不难理解,关键是灵活运用。

CodeChina开源项目:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

css源码pdf

JavaScript知识点

一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!

AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算

习笔记+真实项目实战+最新讲解视频】]( )**

[外链图片转存中…(img-AmscTUA0-1712290321085)]

[外链图片转存中…(img-Rytsr6Lc-1712290321085)]

一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!

AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值