swift WkWebView的返回,goback,跳过同级

swift WkWebView的返回,goback,跳过同级

在使用wkwebview的时候,需要增加顶部的返回图标,可以直接调用gaback函数,但是在web页中,同一页的不同tab也会被压入返回的backForwardList.backlist中,所以导致点击返回图标会停留在同一页面。针对这个bug的解决方法如下。

@objc private func onBack(sender: UIBarButtonItem) {
        guard let webview = wkWebView else { return }
        if(webview.canGoBack) {
            var backlist = webview.backForwardList.backList  // 获得存储的栈
            var lastItem = backlist.popLast()  
            let currentItem = webview.backForwardList.currentItem
            while(lastItem?.url.relativePath == currentItem?.url.relativePath) {  // 比较返回页和当前页的url的realtive部分,相同的话就不断的弹出栈
                lastItem = backlist.popLast()
            }
            if let lastitem = lastItem {
                webview.go(to: lastitem)     // 调用go函数,直接调转到要返回的web页
                backlist.popLast()     // 因为上面调用了go函数,backlist中会增加此次web跳转,所以弹出此次跳转
            } else {
                navigationController?.popViewController(animated: true)
            }

        } else {
            navigationController?.popViewController(animated: true)
        }
    }
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Swift 中使用 WKWebView 加载绝对路径的 CSS 样式表,可以通过以下步骤来实现: 1. 将 CSS 文件添加到您的项目中。可以拖放 CSS 文件到项目导航器中的适当位置,确保将其添加到正确的目标。 2. 在您的 ViewController 类中,导入 WebKit 框架: ```swift import WebKit ``` 3. 创建一个 WKWebView 的实例,并将其添加到您的视图层次结构中: ```swift let webView = WKWebView(frame: view.bounds) view.addSubview(webView) ``` 4. 使用 `fileURLWithPath` 方法获取 CSS 文件的绝对路径,并通过 `loadFileURL` 方法加载本地 HTML 文件: ```swift if let cssURL = Bundle.main.url(forResource: "style", withExtension: "css") { let htmlPath = Bundle.main.path(forResource: "index", ofType: "html") // index.html 是您的 HTML 文件名 let htmlURL = URL(fileURLWithPath: htmlPath!) webView.loadFileURL(htmlURL, allowingReadAccessTo: cssURL) } ``` 这里假设您的 CSS 文件名为 "style.css",HTML 文件名为 "index.html"。确保将这些文件添加到您的项目中,并指定正确的文件名和扩展名。 5. 在 HTML 文件中,使用 `<link>` 标签将 CSS 样式表链接到页面上。在 `<head>` 标签内,添加以下行: ```html <link rel="stylesheet" type="text/css" href="style.css"> ``` 确保将 "style.css" 替换为您的 CSS 文件名。 这样,当 WKWebView 加载 HTML 文件时,它会自动加载链接的 CSS 样式表并应用于页面。 请注意,确保 CSS 文件和 HTML 文件位于正确的位置,并在项目目标的 Build Phases 中将它们添加到 "Copy Bundle Resources" 列表中,以便在构建时正确复制到应用程序包中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值