webview 判断加载的是哪个页面

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了webview 判断加载的是哪个页面相关的知识,希望对你有一定的参考价值。

参考技术A
我注意到webview的frameLoadDelegate里面有webView:(WebView
*)sender
didFinishLoadForFrame:(WebFrame
*)frame这个方法,如果在里面加上判断是否是mainframe就可以判断webpage是否加载完毕。大多数情况下可行,但是有些url需要重定向,

SwiftUI:WebView 不加载特定页面

【中文标题】SwiftUI:WebView 不加载特定页面【英文标题】:SwiftUI: WebView doesn't load specific page 【发布时间】:2020-09-26 18:46:36 【问题描述】:

我尝试在我的 WebView 中加载一个 url,它适用于“https://www.google.com”,但不适用于“https://www.sl.se”。 它显示“未找到,HTTP 错误 404:未找到请求的资源。”

奇怪的是,如果我在谷歌页面搜索“sl.se”,点击sl.se,“www.sl.se”可以加载WebView。有谁知道原因吗?

ContentView.swift

// ContentView.swift

struct ContentView: View 
    @State private var shouldRefresh = false
        var body: some View 
            VStack
                Button(action: 
                    self.shouldRefresh.toggle()                    
                )
                    Text("Reload")
                
                WebView(url: nil, reload: $shouldRefresh)
            
        

WebView.Swift

// WebView.swift

import WebKit
import SwiftUI

struct WebView: UIViewRepresentable

    var url: URL?     // optional, if absent, one of below search servers used
    @Binding var reload: Bool

    private let urls = [URL(string: "https://google.com/")!, URL(string: "https://www.sl.se")!]
    private let webview = WKWebView()

    fileprivate func loadRequest(in webView: WKWebView) 
        if let url = url 
            webView.load(URLRequest(url: url))
         else 
            let index = Int(Date().timeIntervalSince1970) % 2
            print("load: \(urls[index].absoluteString)")
            webView.load(URLRequest(url: urls[index]))
        
    

    func makeUIView(context: UIViewRepresentableContext<WebView>) -> WKWebView 
        loadRequest(in: webview)
        return webview
    

    func updateUIView(_ uiView: WKWebView, context: UIViewRepresentableContext<WebView>) 
        if reload 
            loadRequest(in: uiView)
            DispatchQueue.main.async 
                self.reload = false     // must be async
            
        
    

【问题讨论】:

【参考方案1】:

您的代码没有任何问题。您只需从 URL 中删除 www。试试https://sl.se,它会起作用的。

【讨论】:

以上是关于webview 判断加载的是哪个页面的主要内容,如果未能解决你的问题,请参考以下文章

WebView如何判断页面真正成功加载?求大神帮助

Android 在当前WebView打开页面,判断是不是有

关于小程序webview加载H5页面出现的问题

android中webview加载html,用本地的css渲染页面如何做

webview获取网页点击事件

SwiftUI:WebView 不加载特定页面