为了让 WebView 正确加载 css 和字体文件,我应该提供哪个基本 url?

Posted

技术标签:

【中文标题】为了让 WebView 正确加载 css 和字体文件,我应该提供哪个基本 url?【英文标题】:Which base url should I give a WebView in order for WebView to correctly load css and font files? 【发布时间】:2016-08-20 17:00:42 【问题描述】:

在我的 Native React 项目中,我想使用 WebView。 html 引用外部 css 文件,css 文件引用一些自定义字体。

鉴于这个等级:

app/
app/index.ios.js
app/android.ios.js
app/package.json
app/node_modules
app/android/
app/ios/

我应该把文件“mycss.css”和“fonts/”文件夹和 我应该为 baseUrl 使用什么?在构建 ios 和 android 版本时,包管理器是否自动包含 css 和字体文件?

    <WebView style=flex: 1
             source=  html:    my_html, 
                        baseUrl: ???  />

在 iOS 上检查 WebView 背后的代码表明 baseUrl 被交给了 UIWebView。这个 *** 问题 How can I add an external stylesheet to a UIWebView in Xcode? 展示了如何从 Objective C 中设置 baseUrl,但是 Native React 中的等价物是什么?

NSURL *mainBundleURL = [NSURL fileURLWithPath:[[NSBundle mainBundle] bundlePath]];
[self.webView loadHTMLString:htmlString baseURL:mainBundleURL];

FWIW 我正在 iOS 上开发(但希望有一种方法可以在这两个平台上进行这项工作)。

【问题讨论】:

【参考方案1】:

以下工作。

添加了一个文件夹web 并使用了这个结构:

app/web/mycss.css
app/web/fonts

使用web/ 作为基本网址。

最后一个难题是将web 文件夹添加到XCode 项目中(在XCode 中执行此操作)。否则web 文件夹中的文件不会包含在为 ios 设备构建的捆绑包中。

【讨论】:

我设法让它在 iOS 上运行...有人知道如何在 Android 上运行吗? @soegaard 你能显示“my_html”字符串的内容吗?我需要检查图像上的路径是如何定义的。

以上是关于为了让 WebView 正确加载 css 和字体文件,我应该提供哪个基本 url?的主要内容,如果未能解决你的问题,请参考以下文章

在 webview 中快速加载 html 文件,更改图像大小、字体和文本大小

iOS 10.3 中的 WebView 字体不正确

Webview android中的Paypal支付页面布局损坏可能css未正确加载?

Android WebView资源文件,如js和css文件缓存

css怎么让两个字体颜色叠加在一起

如何实现webview 上网页能进行自动适应手机屏幕大小