🗒️Tauri 网页动态注入Javascript
2023-8-9
| 2023-9-21
0  |  阅读时长 0 分钟
type
status
date
summary
tags
category
icon
在之前一篇文章中
Tauri 加载远程url的两种方式
提到如何使用 Tauri 加载一个现有的网页,通过 url 加载网页,一般都是有定制的诉求,本文介绍如何先远程网页注入自定义的 Javascript 文件。
 

1. 通过 invoke_system API 注入

先上代码,方便有一个直观的感受:
直接调用 invoke_system 这个API,非常的简单,第一个参数就是 Javascript 的内容,第二个参数是 Tauri 和 Javascript 通信相关的响应函数,先使用一个空函数占位,后面再补充。
 
这样写 Javascript 文件容易出现问题,尤其缺失一些校验啥的,容易出现语法错误,我们可以把 Javascript 的内容放在一个 test.js 文件中,然后通过下面方式注入:
也可搭配其他构建工具使用,具体按需求定制。
 
注入的 Javascript 本身是无问题,但如果想调用 Tauri 提供的一些能力,却无能为力了。因为 invoke_system 这个 API 在 Tauri 中初始的作用并不是给我们用于注入自定义 Javascript 文件的。
 
查看 Tauri 的源码,可以发现 invoke_system 这个 API 初始会自己注入一段JS,用于网页和Tauri通信使用,我简化了一下源码:
然后其第二个参数也需要针对 postMessage 发送的数据进行转化处理,如果是调用 Tauri 的一些能力,例如自定义的函数,需要将结果在传递回网页,这个具体过程以后再介绍,先有一个大概认知即可。
 
所以最终可行的方案是,在 test.js 中新增上面这一段代码,然后就可随意加自己的代码了,同时第二个参数需要照抄一下Tauri中源码的
mac-client中就是使用的这个方案,具体可以看 main.rs 中的写法。
 

2. 通过 initialization_script API注入

这个 API 依赖动态构建 window 对象,在
Tauri 加载远程url的两种方式
中的第二个方式有介绍过。其使用方式更简单些:
 
相对 invoke_system, 使用 initialization_script 简直不要得太幸福了,而且可以多次调用。如果不是爱折腾,推荐使用这个方式,简单不易出错,完全就是官方推荐的写法。
技术分享
  • Tauri
  • Rust
  • 前端
  • iOS快捷指令实现秒级记账Tauri 加载远程url的两种方式
    目录