首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何检测WKWebview更改amp页面的url

WKWebView是iOS平台上的一个网页浏览器控件,用于加载和显示网页内容。如果想要检测WKWebView中的AMP页面URL的更改,可以通过以下步骤实现:

  1. 首先,需要创建一个WKNavigationDelegate的实例,并将其设置为WKWebView的navigationDelegate属性。这样可以监控网页加载过程中的各种事件。
  2. 在WKNavigationDelegate中,可以使用webView(_:didCommit:)方法来检测到页面开始加载的事件。在该方法中,可以获取到当前加载的URL,并进行处理。
  3. 接着,可以使用webView(_:decidePolicyFor:decisionHandler:)方法来检测到页面URL的变化。在该方法中,可以获取到新的URL,并与之前的URL进行比较,以确定是否发生了URL的更改。
  4. 如果发现URL发生了更改,可以进行相应的处理操作,例如记录日志、发送通知等。

下面是一个示例代码,演示了如何检测WKWebView中AMP页面URL的更改:

代码语言:swift
复制
import WebKit

class ViewController: UIViewController, WKNavigationDelegate {
    var webView: WKWebView!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        let configuration = WKWebViewConfiguration()
        webView = WKWebView(frame: view.bounds, configuration: configuration)
        webView.navigationDelegate = self
        view.addSubview(webView)
        
        let url = URL(string: "https://example.com/amp-page")!
        let request = URLRequest(url: url)
        webView.load(request)
    }
    
    // 页面开始加载时调用
    func webView(_ webView: WKWebView, didCommit navigation: WKNavigation!) {
        // 获取当前加载的URL
        if let url = webView.url {
            print("Current URL: \(url)")
        }
    }
    
    // 检测到页面URL变化时调用
    func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {
        // 获取新的URL
        if let newURL = navigationAction.request.url {
            // 获取之前的URL
            if let oldURL = webView.url {
                // 比较新旧URL是否相同
                if newURL != oldURL {
                    print("URL changed: \(oldURL) -> \(newURL)")
                    // 进行相应的处理操作
                    // ...
                }
            }
        }
        
        decisionHandler(.allow)
    }
}

在上述示例代码中,我们创建了一个WKWebView实例,并设置了navigationDelegate为当前的ViewController。在页面开始加载时,会调用webView(:didCommit:)方法,我们可以在该方法中获取到当前加载的URL。在页面URL发生变化时,会调用webView(:decidePolicyFor:decisionHandler:)方法,我们可以在该方法中获取到新的URL,并与之前的URL进行比较。

需要注意的是,上述示例代码仅演示了如何检测WKWebView中AMP页面URL的更改,并没有涉及具体的处理操作。根据实际需求,可以根据URL的变化进行相应的业务逻辑处理。

腾讯云相关产品和产品介绍链接地址:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

分享超详细 WKWebView 开发和使用经验

WKWebView 几个不常用的特性 WKWebview 加载过程中的性能指标图解 WKWebview 秒开的实践及踩坑之路 今天分享的这篇文章全面的介绍了 WKWebView,作者根据开发和使用经验从属性...,属于单渲染和加载,所以效率高。...WKWebView 属性 webView 属性 title: 网页的标题,一般为 html 中的 中的内容 URL: 网页的URL地址,为最终加载的地址 loading:...请求头信息 allowsLinkPreview: 允许 3Dtouch 预览页面,压力屏存在的情况下 webView 方法 canGoBack: 是否可以返回上一 canGoForward: 是否可以前进一...goBack: 返回上一 goForward: 前进一 eload: 根据当前URL刷新页面 reloadFromOrigin: 根据最初 URL 刷新页面 stopLoading: 停止加载 evaluateJavaScript

4.7K30

WKWebView 白屏问题

WKWebView 中加载下面的测试链接可以稳定重现白屏现象: http://people.mozilla.org/~rnewman/fennec/mem.html 这个时候 WKWebView.URL...会变为 nil, 简单的 reload 刷新操作已经失效,对于一些长驻的H5面影响比较大。...[webView reload](这个时候 webView.URL 取值尚不为 nil)解决白屏问题。...B、检测 webView.title 是否为空 并不是所有H5面白屏的时候都会调用上面的回调函数,比如,最近遇到在一个高内存消耗的H5面上 present 系统相机,拍照完毕后返回原来页面的时候出现白屏现象...在WKWebView白屏的时候,另一种现象是 webView.titile 会被置空, 因此,可以在 viewWillAppear 的时候检测 webView.title 是否为空来 reload 页面

4.4K20

WKWebView 那些坑

WKWebView 中加载下面的测试链接可以稳定重现白屏现象: http://people.mozilla.org/~rnewman/fennec/mem.html 这个时候 WKWebView.URL...[webView reload](这个时候 webView.URL 取值尚不为 nil)解决白屏问题。...B、检测 webView.title 是否为空 并不是所有H5面白屏的时候都会调用上面的回调函数,比如,最近遇到在一个高内存消耗的H5面上 present 系统相机,拍照完毕后返回原来页面的时候出现白屏现象...在WKWebView白屏的时候,另一种现象是 webView.titile 会被置空, 因此,可以在 viewWillAppear 的时候检测 webView.title 是否为空来 reload 页面...; 5、WKWebView 页面样式问题 在 WKWebView 适配过程中,我们发现部分H5面元素位置向下偏移或被拉伸变形,追踪后发现主要是H5面高度值异常导致: a.

4.5K130

WKWebView 那些坑

WKWebView中加载下面的测试链接可以稳定重现白屏现象:http://people.mozilla.org/~rnewman/fennec/mem.html 这个时候webView.URL会变为nil...[webView reload] (这个时候webView.URL取值尚不为nil)解决白屏问题。...1.2、检测webView.title是否为空 并不是所有页面白屏的时候都会调用上面的回调函数,比如,最近遇到在一个高内存消耗的H5面上present系统相机,拍照完毕后返回原来页面的时候出现白屏现象...在WKWebView白屏的时候,另一种现象是webView.titile会被置空, 因此可以在viewWillAppear的时候检测webView.title是否为空来reload页面。...; 5、WKWebView 页面样式问题 在WKWebView适配过程中,我们发现部分H5面元素位置向下偏移或被拉伸变形,追踪后发现主要是H5面高度值异常导致: a.

17.1K21

Hybrid App 应用 开发中 9 个必备知识点复习(WebView 调试 等)

(这个时候 webView.URL 取值尚不为nil)解决白屏问题。...检测 webView.title 是否为空 并不是所有 H5 页面白屏的时候都会调用上面的回调函数,比如,最近遇到在一个高内存消耗的 H5 页面上 present 系统相机,拍照完毕后返回原来页面的时候出现白屏现象...在 WKWebView 白屏的时候,另一种现象是 webView.titile 会被置空, 因此,可以在 viewWillAppear 的时候检测 webView.title 是否为空来 reload...如果某些特殊情况下非得调整 contentInset 不可的话,可以通过下面方式让H5面恢复正常显示。 6....DebugGap 1.4电脑端远程 DebugGap 将检测即将到来的客户端,开发人员可以单击每个客户端进行调试。 DebugGap 七、在 iOS 平台下如何调试 WebView?

3.1K00

【Hybrid】288- Hybrid App 应用开发中 9 个必备知识点复习

webView.URL 取值尚不为 nil)解决白屏问题。...检测 webView.title 是否为空 并不是所有 H5 页面白屏的时候都会调用上面的回调函数,比如,最近遇到在一个高内存消耗的 H5 页面上 present 系统相机,拍照完毕后返回原来页面的时候出现白屏现象...在 WKWebView 白屏的时候,另一种现象是 webView.titile 会被置空, 因此,可以在 viewWillAppear的时候检测 webView.title 是否为空来 reload 页面...如果某些特殊情况下非得调整 contentInset 不可的话,可以通过下面方式让H5面恢复正常显示。 6....1.4电脑端远程 DebugGap 将检测即将到来的客户端,开发人员可以单击每个客户端进行调试。 六、在 iOS 平台下如何调试 WebView?

2.3K20

Hybrid App 应用开发中 9 个必备知识点复习

(这个时候 webView.URL 取值尚不为 nil)解决白屏问题。...检测 webView.title 是否为空 并不是所有 H5 页面白屏的时候都会调用上面的回调函数,比如,最近遇到在一个高内存消耗的 H5 页面上 present 系统相机,拍照完毕后返回原来页面的时候出现白屏现象...在 WKWebView 白屏的时候,另一种现象是 webView.titile 会被置空, 因此,可以在 viewWillAppear的时候检测 webView.title 是否为空来 reload 页面...如果某些特殊情况下非得调整 contentInset 不可的话,可以通过下面方式让H5面恢复正常显示。 6....1.4电脑端远程 DebugGap 将检测即将到来的客户端,开发人员可以单击每个客户端进行调试。 六、在 iOS 平台下如何调试 WebView?

2.6K20

iOS新闻类App内容技术探索

遗留问题: 目前,在使用WKWebView的过程中,唯一未解决的问题就是可靠、全面的白屏检测方案,从而支持WKWebView在任何情况下的Crash进行重载。...如何在页面中合理的处理WebView与扩展区中的多种View协同滚动,灵活扩展,并且支持下拉刷新、上拉加载等操作,不同的新闻类App也有不同的技术方案。 1....在此基础上,要动态的检测ContenSize是否小于屏幕高度,高度小于一屏幕时,要同时调整Native扩展区组件的位置。 2....- 内容组件化架构 - 在实现了以上技术关键点的基础上,如何合理的设计内容通用的架构,快速响应内容的各种需求调整,使整体架构易扩展、易维护,同时有较高的性能及较小的内存占用,成为了整个内容架构实现的重点...除了基本的线程安全、复用状态管理等,在进入回收池前要load特殊Url以维护整个backFowardList。

2.9K00

Hybrid App 应用开发中 9 个必备知识点复习

webView.URL 取值尚不为 nil)解决白屏问题。...检测 webView.title 是否为空 并不是所有 H5 页面白屏的时候都会调用上面的回调函数,比如,最近遇到在一个高内存消耗的 H5 页面上 present 系统相机,拍照完毕后返回原来页面的时候出现白屏现象...在 WKWebView 白屏的时候,另一种现象是 webView.titile 会被置空, 因此,可以在 viewWillAppear的时候检测 webView.title 是否为空来 reload 页面...如果某些特殊情况下非得调整 contentInset 不可的话,可以通过下面方式让H5面恢复正常显示。 6....1.4电脑端远程 DebugGap 将检测即将到来的客户端,开发人员可以单击每个客户端进行调试。 六、在 iOS 平台下如何调试 WebView?

2.3K30

一个 Hybrid SDK 设计与实现

Hybrid 、Native、前端各自的工作是什么 Hybrid 交互接口如何设计 Hybrid 的 Header 如何设计 Hybrid 的如何设计目录结构以及增量机制如何实现 资源缓存策略,白屏问题...,Native如果检测到不可后退则返回Naive大首页 // home前端默认返回指定URL,Native默认返回大首页 this.header.set({ left: [...可以通过内容的控制,避免 wap 中出现外部页面的跳转,也可以通过 webview 的对应代理方法,禁掉我们不希望出现的跳转类型,或者同时使用,双重保护来确保当前 webview 容器中只会出现我们定制过的内容...基于上面的方案,我们的 wap 的完整展示流程是这样:客户端在 webview 中加载某个 url,判断符合规则,load 本地的模板 html,该页面的内部实现是通过客户端提供的网络请求接口,发起获取具体页面内容的网络请求...能拿到 WKWebView面的 post 请求信息,剩下的就不是问题啦。 AJAX hook 的实现可以看这个 Repo.

1.2K10

《移动端本地 H5 秒开方案探索与实现》

二、如何优化 上述打开一个页面的过程有很多优化点,包括前端和客户端,常规的前端和后端的性能优化已有前辈们总结过最佳实践,主要的是: 降低请求量:合并资源,减少 HTTP 请求数,minify / gzip...整体思路看起来比较清晰,但是其中有几个关键问题需要解决: 3.1 本地H5如何和native通信: 本地 H5 页面如何和 native 通信的方式基本有三种:jsapi、URL Scheme 和...这种的方案,就可以较好的解决上面的问题了。 ?...屏蔽webview HTML 内容自动识别 在 IOS webView 中默认会自动检测 HTML 中手机号、email、地址格式并标记。...i18n.en : i18n.zh WKWebView 兼容 WKWebView 性能比 UIViewView 性能好很多,所以客户端开发一般都推荐使用 WKWebView

5.4K162

WKWebView详解

; 在iOS上,这个属性只在支持3D Touch的设备上支持 在iOS 10及以后的系统版本默认值是YES,之前的默认值是NO 如果将该属性的值设置为YES,则iOS用户可以按下链接来预览链接,并可以检测到地址和电话号码等数据...作为应用内浏览器,那么进行这种更改是最佳选择 SFSafariViewController自动支持链接预览 iOS 10.0+开始支持自定义链接预览,你也可以通过这种方式来实现用户预览网页并pop后仍然留在应用内而不用切换到...WKUserInterfaceDirectionPolicy userInterfaceDirectionPolicy; 默认值是WKUserInterfaceDirectionPolicyContent 设置需要检测的数据类型...WKDataDetectorTypes WKDataDetectorTypeNone 不执行检测 WKDataDetectorTypePhoneNumber 电话号码 WKDataDetectorTypeLink...选择此值将自动包含添加到这个常量的任何新的检测类型 WKURLSchemeHandler 用来处理WebKit无法处理的URL Scheme类型的资源 开始加载特定资源时调用 - (void)webView

20.4K193

网易严选的wkwebview测试之路

不过苹果在iOS8以后推出了WKWebView来加载Web。UIWebView自iOS2就有,WKWebView从iOS8才有,毫无疑问WKWebView是将会逐步取代笨重的UIWebView。...而WKWebView网页加载速度大有提升,占用更少内存。   ...2、wkwebview的本地html页面加载失败   严选app内置了一份网络解决方案,如若检测到无网络状态可以查看这个本地页面进行网络的配置(主要是iOS10系统刚推出的时候,需要用户开启app启动网络的权限才能使用的问题...开发大大排查之后发现是wkwebview中加载的方法变了(wkwebview不支持用loadRequest的方法加载本地的静态HTML),要替换不同的方法来加载,修复之后的效果 3、wkwebview...页面样式问题   在测试过程中,替换wkwebview之后,很多APP内的H5面样式出现了兼容的问题,尤其是针对iPhone X的适配方面,对此我们只能全局查看各种H5面,一一检查页面是否错乱,大部分页面的问题都是页面底部或者导航栏异常

1.7K10

小程序白屏问题和内存研究

关于WKWebview白屏,网上罗列的常见原因大致有以下几种: 内存占用比较大时,WebContent Process 会 crash,从而出现白屏现象。 URL网址无效或者含有中文字符。...至于原因2,如果是小程序原生开发的话,页面间的跳转URL包含中文也是能正常跳转的,这个应该是小程序内部兼容了。...根据小程序团队分析过的大部分案例,大图片和长列表图片的使用,都会引起WKWebview被回收[10]。其中长列表图片是指页面包含数目较大的列表,每个列表里面又引用了图片。...第二数据过来了,我们把新数据concat到第一上,此时,listData就包含了第一、第二两个页面的数据。第三的数据过来了,listData就包含前三个页面的数据。...现在我们不妨停下来想想,目前我们给用户呈现的是第三的数据,第一的数据处于不可见的状态,既然不可见,为何不把它丢弃?如果用户往上滑动,需要呈现第一的数据时,我们可以再请求第一的数据。

2.1K11
领券