首页 > 解决方案 > 是否可以在像js这样的网页上运行swift或swift与JS交互

问题描述

我不确定这有多可行(来自 web 性能 POV),但我想知道 Swift 代码是否可以在网站内运行?

例如,像 JS 的脚本标签一样添加到您的 HTML 标记中?

用例:

IOS 具有阻止某些网站功能(例如autoplay视频)的低功耗模式 - 虽然您可以使用 js 事件侦听器来检测挂起,但我发现这是不可靠的指标(因为单击页面会导致视频挂起)。

我想知道是否可以使用 swift 快速检测是否正在使用低功耗模式,并为 JS 传递/创建一些标志以相应地检测和更改设计/功能。

我简要阅读了 Swift 文档,但可以让 swift 开发人员权衡这种解决方法的可能性。

理想情况下,会有一个针对低功耗模式的媒体查询,例如:@media and (low-power){}但这似乎不是 CSS 的当前功能

标签: javascriptiosswift

解决方案


是和不是。Swift 在浏览器中运行,但它无法访问系统 API,除非您在定制的浏览器中运行它。

在浏览器中快速运行

可以在浏览器中运行 Swift 代码。您可以为此使用SwiftWasm。一些实用信息可以在SwiftWasm 书中找到

Swift ⇄ javascript 交互

也可以与 javascript 交互。见:https ://github.com/swiftwasm/JavaScriptKit

系统 API 访问

但是,无法通过普通浏览器访问系统 API。如果您想访问这些 API,您应该创建一个原生应用程序。请注意,您还可以在本机应用程序中创建 Web 内容。WKUserContentController在此类应用程序中,您确实可以通过'add(_:name:)方法访问系统 API 。


推荐阅读