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
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
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