Replies: 1 comment 6 replies
-
代码示例:6299677 |
Beta Was this translation helpful? Give feedback.
6 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
Why
目前观察到
Tauri
作为基于系统webview
的跨平台应用开发框架,其相较于使用成熟的chromium
,会有很大的体积优势,但是相对的会存在系统webview
没有实现一些需要外部进程或者系统native
去做的相关能力:摄像头、话筒的调用,系统默认的alert | prompt
等。(感觉上系统的 webivew 应该只负责实现浏览器中从 url 到页面渲染的通路,而涉及和 native 的部分其实不做实现只是遵循规范提供 api 占位)对于直接使用
Tauri
的开发者来说还好,因为可以通过自行完善 一些native
功能来规避这些问题,但是如果通过pake
打包的web
应用中使用了这些能力,则会导致应用打包出来有巨大缺陷,比如之前一些issue
和discussion
里提到的:#421
#422
How
针对上面提到的问题,我想到两种方案去解决:
rust
端原生的功能,通过在注入的js
中对prompt
等无法调用的api
进行拦截,并通过invoke
去调用原生的方法解决。build
前将外部的补丁文件直接通过build
环节正式触发tarui
的构建前生成一个本地文件并放置到指定目录,通过rust
注入到window
中,实现外部自行为页面进行补丁的功能。它大概是这样去使用:
What
根据配置合成脚本放到指定文件目录
注入到 pake 页面中进行执行
通过这样的流程,可以实现在 pake 中达到类似使用油猴脚本的效果。当然如果出于某些作用域限制,也可以在合并外部 js 时手动控制一下暴露给外部 js 的 api 和上下文信息。
More
这样的思路或许可以适用于后续插件系统的构成,但是需要统一外部 js 具体的组织形式或者数据结构,重新调整合并和注入到页面逻辑。
Beta Was this translation helpful? Give feedback.
All reactions