WKWebView 不加载第二个 CSS

Posted

技术标签:

【中文标题】WKWebView 不加载第二个 CSS【英文标题】:WKWebView not loading second CSS 【发布时间】:2018-09-13 18:23:43 【问题描述】:

我正在使用 WKWebView 加载本地 html。 HTML 文件正在从同一位置加载 main.css 文件。 CSS 有效。

如果我点击一个链接,从假设dir/another.html 加载另一个 HTML 文件,该文件正在加载带有 ../main.css 的 CSS 链接甚至不会打开

当我从 dir/another.html 中删除 CSS 链接时,HTML 将加载。 有人可以帮我解决这个问题吗? o.O


视图控制器

override func viewDidLoad() 

    content.isOpaque = false
    content.uiDelegate = self
    content.navigationDelegate = self
    let url = Bundle.main.url(forResource: result?.id, withExtension: "html", subdirectory: "location".localized)!
    // result?.id is pointing to index.html at "location".localized

    let request = URLRequest(url: url)
    content.loadFileURL(url, allowingReadAccessTo: url)
    content.load(request)

    super.viewDidLoad()



第一个 HTML index.html

<!doctype html>
<html>
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="user-scalable=no, initial-scale=1" />
        <link rel="stylesheet" type="text/css" href="style.css">
    </head>
    <body>

    <div class="anything">
        <a href="dir/another.html">Link</a>
    </div>
    ...

第二个 HTML dir/another.html

<!doctype html>
<html>
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="user-scalable=no, initial-scale=1" />
        <link rel="stylesheet" type="text/css" href="../style.css">
    </head>
    <body>

    <div class="anything">
        <a href="dir/another.html">Link</a>
    </div>
    ...

按需提供更多信息 :)

【问题讨论】:

您遇到了什么错误?我的意思是在控制台(F12)。如果有的话 对不起@kademat,什么样的控制台? Xcode 输出? @TomášPánik 我的意思是点击链接后来自谷歌浏览器的控制台:ExampleConsole 点击链接后控制台中没有输出也是有用的信息:) content.loadFileURL(url, allowingReadAccessTo: url) 您正在限制对url 的访问,但这不是其他页面所在的位置。看起来就这么简单。 您可以在开发菜单中将 Safari 连接到您的模拟器 WKWebView(您可能需要在 Safari 的首选项 -> 高级中启用此菜单) 【参考方案1】:

你是说:

content.loadFileURL(url, allowingReadAccessTo: url)

因此,您正在限制对 this 目录(由url 表示的目录)的访问。当您尝试访问 不同 目录中的资源时,您会被完全阻止。

【讨论】:

我理解您之前对此的评论,您是对的 :) 马特,有没有简单的解决方案可以使用此方法并允许读取访问到 HTML 根目录,包括那里的所有内容? 使用Bundle.main本身的URL? 具体怎么做?对不起,noobish 问题

以上是关于WKWebView 不加载第二个 CSS的主要内容,如果未能解决你的问题,请参考以下文章

第二个 jQuery 加载日期选择器不工作

将值从第一个下拉列表提交到第二个下拉列表而不重新加载页面

WKWebView 不显示加载的内容

如果第一个 URL 不存在于 android webView 中,则加载第二个 URL

iOS 8 下 WKWebView 不加载本地文件

setUserVisibleHint的使用.执行顺序和viewPager.setOffscreenPageLimit不管用还是默认会加载第二个fragment