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

检测WKWebView中的非导航按钮单击

在WKWebView中检测非导航按钮的单击,可以通过以下步骤实现:

  1. 首先,需要使用WKWebView的代理方法来监听网页加载完成的事件。在网页加载完成后,可以获取到网页中的所有元素。
  2. 接下来,需要使用JavaScript来遍历网页中的所有元素,并为非导航按钮添加点击事件监听器。可以通过添加JavaScript代码到WKWebView中来实现这一步骤。
  3. 在JavaScript代码中,可以使用DOM操作方法来获取网页中的所有按钮元素。可以通过元素的标签名、类名、ID等属性来定位按钮元素。
  4. 对于非导航按钮元素,可以为其添加点击事件监听器。当按钮被点击时,可以触发相应的回调函数。
  5. 在回调函数中,可以执行需要的操作,例如记录按钮点击事件、发送统计数据等。

以下是一个示例的代码片段,用于检测WKWebView中的非导航按钮单击:

代码语言:txt
复制
// 实现WKNavigationDelegate代理方法
class ViewController: UIViewController, WKNavigationDelegate {
    var webView: WKWebView!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        // 初始化WKWebView
        let configuration = WKWebViewConfiguration()
        webView = WKWebView(frame: view.bounds, configuration: configuration)
        webView.navigationDelegate = self
        view.addSubview(webView)
        
        // 加载网页
        let url = URL(string: "https://example.com")
        let request = URLRequest(url: url!)
        webView.load(request)
    }
    
    // 网页加载完成时调用
    func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
        // 注入JavaScript代码
        let script = """
        var buttons = document.getElementsByTagName('button');
        for (var i = 0; i < buttons.length; i++) {
            buttons[i].addEventListener('click', function() {
                // 执行按钮点击事件的回调函数
                buttonClicked(this);
            });
        }
        
        function buttonClicked(button) {
            // 在此处执行按钮点击事件的操作
            console.log('Button clicked:', button.innerText);
        }
        """
        let userScript = WKUserScript(source: script, injectionTime: .atDocumentEnd, forMainFrameOnly: true)
        webView.configuration.userContentController.addUserScript(userScript)
    }
}

在上述代码中,通过使用WKWebView的代理方法webView(_:didFinish:)来监听网页加载完成的事件。在加载完成后,通过注入JavaScript代码来遍历网页中的所有按钮元素,并为非导航按钮添加点击事件监听器。在点击事件的回调函数中,可以执行相应的操作。

请注意,上述代码仅为示例,实际使用时需要根据具体需求进行修改和完善。

对于腾讯云相关产品和产品介绍链接地址,可以根据具体需求选择适合的产品。例如,可以使用腾讯云的云服务器(CVM)来部署和运行WKWebView,使用腾讯云的对象存储(COS)来存储网页资源文件等。具体的产品介绍和链接地址可以在腾讯云官网上查找。

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

相关·内容

车道线检测在AR导航应用与挑战

在AR导航车道线同样重要,实时车道线检测能够为AR导航引擎提供当前车道宽度、车道线属性等信息,从而提前对用户做出正确引导,指引驶入正确车道。...AR导航车道线检测方法探索和实践 ---- 车载AR导航要求将引导要素实时迭加到真实场景,这对于AR导航车道线检测实时性和稳定性提出了极高要求,与此同时,由于车载设备(车机/车镜)硬件算力较差...,一般落后于手机芯片3-5年,所以AR导航车道线检测必须做到又快又好。...在AR导航,我们采用第二种车道线标注方式,并在车道线检测模型增加消失点识别分支,在车道线后处理以消失点为锚点,优化车道线识别精度。...挑战与展望 ---- 在AR导航,车道线有着举足轻重地位,作为AR导航基础,搭建在其上一系列导航功能好坏都与它检测精度息息相关。

1.7K10

WKWebView详解

您可以使用WKWebView类来在应用程序嵌入web内容,通过创建一个WKWebView对象,将其设置为视图,并发送一个请求来加载web内容。...(已弃用) WKDataDetectorTypeAll 上述所有检测类型。...WebView用户界面通过实现这个协议来控制新窗口打开,增强用户单击元素时显示默认菜单项表现,并执行其他用户界面相关任务。这些方法可以通过处理JavaScript或其他插件内容来调用。...警告应该只有一个确定按钮 显示一个JavScript 确认界面 - (void)webView:(WKWebView *)webView runJavaScriptConfirmPanelWithMessage...nil 为了安全,实现这个方法时候需要注意到确认内容是有一个特定网站指定,这里有一个简单准则就是用frame.request.URL.host属性来标识这个确认界面 确认界面应该只有两个按钮

20.5K193
  • iOS开发----JavaScriptCore、UIWebView及WKWebView交互那些事

    假设一个简单场景 Web通过一个 输入一个字符串,通过点击按钮设置成导航标题 原生设置完导航标题后,告知Web"以将"设置成导航Title,并在网页最底下label显示出来...分别使用 UIWebView 以及 WKWebView 实现效果如下: JavaScriptCore 类库里面有12个类(还有两个是负责导入相关类头文件以及一个关于WebKit宏定义);在基本交互过程...宏,可以将方法名简化,就像 Swift typealias以及 ObjC typedef。...JavaScript逻辑如下: 确认当前使用是 UIWebView还是 WKWebView,并通过变量 ritl_type确定 点击按钮,根据类型执行不同操作 客户端通过执行 iosTellSomething...UIWebViewDelegate 在UIWebViewDelegate webViewDidFinishLoad() 方法对JSContext进行截取,并执行操作: WKWebView 首先有一点

    1.5K20

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

    WKWebView 白屏时候,另一种现象是 webView.titile 会被置空, 因此,可以在 viewWillAppear 时候检测 webView.title 是否为空来 reload...为了避免每次调试时看到此警告,勾选“总是允许从这台计算机”,并单击“确定”。...Chrome 控制台 Chrome 控制台 1.5 小技巧: (1)访问 chrome://inspect/#devices 如果 chrome 没有检测到 Remote Target 页面...输入与远程 DebugGap 上主机和端口相同主机和端口,例如 192.168.1.4:11111,然后点击“连接”按钮。...DebugGap 1.4电脑端远程 DebugGap 将检测即将到来客户端,开发人员可以单击每个客户端进行调试。 DebugGap 七、在 iOS 平台下如何调试 WebView?

    3.1K00

    WKWebView

    6,WKWebView是多进程组件,这意味着会从APP内存中分离内存到单独进程。...要允许用户在Web历史页面前进或者后退,要为按钮设置goBack或者goForward动作。当用户不能在某个方向上再移动时,使用canGoBack或者canGoForward来禁用按钮。...网页视图后退列表,即之前访问过web页面的列表。 canGoBack。布尔值,指示后退列表是否有可被导航后退项。 canGoForward。布尔值,指示后退列表是否有可被导航前进项。...导航到后退列表后腿项。 - goForward。导航到后退列表前进项。 - goToBackForwardListItem:。导航到后退列表某一个网页项,并将其设置为当前项。...导航到后退列表后退项。 - goForward。导航到后退列表前进项。 - reload。重新加载当前页面。 - reloadFromOrigin。

    6K20

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

    WKWebView 白屏时候,另一种现象是 webView.titile 会被置空, 因此,可以在 viewWillAppear时候检测 webView.title 是否为空来 reload 页面...(true); } 注意 web 调测不受 app manifest 文件 debuggable 标记状态影响,如果希望仅 debuggable为 true 时才能使用 web 调测,那么运行时检测此标记...为了避免每次调试时看到此警告,勾选“总是允许从这台计算机”,并单击“确定”。...1.5 小技巧: (1)访问 chrome://inspect/#devices 如果 chrome 没有检测到 RemoteTarget 页面,可能需要安装一下 Chrome ADB 插件,也可以在...1.4电脑端远程 DebugGap 将检测即将到来客户端,开发人员可以单击每个客户端进行调试。 六、在 iOS 平台下如何调试 WebView?

    2.3K20

    UI篇- UIWebView使用大全

    ,不做深究 WKWebView是iOS8推出,算是UIWebVeiw升级版。...自动检测网页上电话号码,单击可以拨打 self.mywebView.detectsPhoneNumbers = YES; 5....导航 一个UIWebView类内部会管理浏览器导航动作,通过goForward和GoBack方法你可以控制前进与后退动作: 可以通过来判断是否可以前进或者后退 @property (nonatomic...根据导航类型参数可以得到请求发起原因 //当网页视图被指示载入内容而得到通知应该返回是,这样会进行加载通过导航类型参数可以得到请求发起原因,可以是以下任意值: - (BOOL)webView:(UIWebView...如何消除Web Alert弹框中出现网址 ? 这里解决方法是通过使用 WKWebView 方法。

    2K10

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

    WKWebView 白屏时候,另一种现象是 webView.titile 会被置空, 因此,可以在 viewWillAppear时候检测 webView.title 是否为空来 reload 页面...(true);} 注意 web 调测不受 app manifest 文件 debuggable 标记状态影响,如果希望仅 debuggable为 true 时才能使用 web 调测,那么运行时检测此标记...为了避免每次调试时看到此警告,勾选“总是允许从这台计算机”,并单击“确定”。...1.5 小技巧: (1)访问 chrome://inspect/#devices 如果 chrome 没有检测到 RemoteTarget 页面,可能需要安装一下 Chrome ADB 插件...1.4电脑端远程 DebugGap 将检测即将到来客户端,开发人员可以单击每个客户端进行调试。 六、在 iOS 平台下如何调试 WebView?

    2.7K20

    iOS监听H5页面goBack返回事件 & 网页监听APP返回键 (NavigationBackItemInjection)

    截取当前显示在屏幕WKWebView UINavigationBarDelegate NavigationType Disable all the '_blank' target in page's...target 在WKWebViewWKNavigationDelegate代理方法处理应用跳转 简单处理WKWebView加载新页面 WKWebView显示JS弹框 WKWebView调用js方法...监听 estimatedProgress 引言 需求:原生app使用WebView 控制器加载H5页面进行信用卡申请 问题:用户点击残忍放弃之后,没有关闭当前控制器 重现场景:用户点击返回按钮,暂时提示框...2、canGoBack:判断当前H5界面是否可以返回方法 3、goBack: 返回上一个界面 4、goForward:可以向前导航到back-forward列表内容,相当于回到关闭之前看过详情界面...self.webView goBack]:[self.navigationController popViewControllerAnimated:YES]; } return YES; } 重写原生导航

    5.9K21

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

    WKWebView 白屏时候,另一种现象是 webView.titile 会被置空, 因此,可以在 viewWillAppear时候检测 webView.title 是否为空来 reload 页面...(true);} 注意 web 调测不受 app manifest 文件 debuggable 标记状态影响,如果希望仅 debuggable为 true 时才能使用 web 调测,那么运行时检测此标记...为了避免每次调试时看到此警告,勾选“总是允许从这台计算机”,并单击“确定”。...1.5 小技巧: (1)访问 chrome://inspect/#devices 如果 chrome 没有检测到 RemoteTarget 页面,可能需要安装一下 Chrome ADB 插件,也可以在...1.4电脑端远程 DebugGap 将检测即将到来客户端,开发人员可以单击每个客户端进行调试。 六、在 iOS 平台下如何调试 WebView?

    2.3K30

    WKWebView常见功能及如何返回上级界面

    1、WKWebView简单初始化 - (WKWebView *)webView{ if (_webView == nil) { _webView = [[WKWebView alloc...return _webView; } 至于如何加载webView用法和UIWebViewle类似,自行百度,下面介绍r如何返回上一层,代码结合ReactiveCocoa,ReactiveCocoa简单使用...@weakify(self) // 返回按钮 [self.baseView.navView addSubview:self.backBtn]; [[self.backBtn rac_signalForControlEvents...,可以采用ReactiveCocoa非常牛逼监听机制: // 绑定关闭按钮 RAC(self.baseView.popBtn, hidden) = [RACObserve(self.webView...canGoBackNum.boolValue); }]; 现在好多APP都会在导航栏下方添加进度条,提醒用户webView加载进度,这在WKWebView实现起来也非常简单,只需自定义UIProgressView

    2.1K30

    UG-NX-8.5车削加工编程实例

    图2 2、创建加工坐标系 在资源栏显示“工序导航器”,将光标置于“工序导航器”空白部分右键单击弹出级联菜单。级联菜单中有“程序顺序视图”、“机床视图”、“几何视图”、“加工方法视图”等,如图3所示。...图27 单击“刀轨设置”选项组切削移动”按钮 ,弹出如图28所示切削移动”对话框,切换到“逼近”选项卡。...有缘学习更多关注桃报:奉献教育(店铺) 图35 单击“刀轨设置”选项组切削移动”按钮 ,弹出切削移动”对话框,切换到“逼近”选项卡。...单击“刀轨设置”选项组切削移动”按钮 ,弹出切削移动”对话框,切换到“逼近”选项卡。...图47 单击“刀轨设置”选项组切削移动”按钮 ,弹出切削移动”对话框,切换到“逼近”选项卡。

    1.8K10

    iOS小技能:右滑返回

    引言 原理:利用系统返回手势interactivePopGestureRecognizer进行实现 使用场景:返回按钮有点小,不好触发返回时,可借助右滑返回来提升用户体验 I 添加右滑返回手势 1.1...(自定义了leftBarButtonItem按钮)没采用系统默认实现,发生当前不可以手势返回,可先检查为什么当前状态,系统不允许你手势返回,例如是否隐藏了 navigationBar,或者隐藏了系统返回按钮...比如push时候,自定义了leftBarButtonItem按钮了,你可以采用分类方式往UIViewController 添加forceEnableInteractivePopGestureRecognizer...= self; // 是否允许手势左滑返回上一级, 类似导航控制左滑返回 _webView.allowsBackForwardNavigationGestures =...rightBarButtonItem 自定义导航rightBarButtonItem,采用initWithCustomView:rightBtn设置rightBtn.frame,让文字更大,更容易点击

    2.2K30

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

    WKWebView 几个不常用特性 WKWebview 加载过程性能指标图解 WKWebview 秒开实践及踩坑之路 今天分享这篇文章全面的介绍了 WKWebView,作者根据开发和使用经验从属性...网页导航代理,可以理解为网页生命周期事件循环。...WKWebView 属性 webView 属性 title: 网页标题,一般为 html 内容 URL: 网页URL地址,为最终加载地址 loading:...Ajax 请求不会带上 Response Set-Cookie 值 302 跳转不会带上 Response Set-Cookie 值 可以使用 iOS11 新 API 对 WKWebView...数据类型检测 WKDataDetectorTypes 支持识别 HTML 字符信息: UIDataDetectorTypePhoneNumber // 手机号 UIDataDetectorTypeLink

    4.8K30

    webview NSURLErrorDomain Code=-999处理

    摘要:替换UIWebview为WKWebview时,遇到一个怪异现象,webview二级界面回到一级界面时,一级重新渲染时,会直接抛错; 分析问题: 因为,我们app支持iOS8以上,考虑到UIWebview...内存使用要比WKWebview高、加载速度慢,同时,对WKWebview高达60fps滚动刷新率以及内置手势充满了羡慕,所以脑袋一抽,撸起袖子直接替换掉原来UIWebview;这个过程中出现了这个莫名其妙问题...(进入一个H5加载界面,点击内容,跳转到另外一个H5界面,然后,点击H5导航返回按钮,上重新加载上一个界面,直接告知加载失败); 加断点,打印出来error信息是: Error Domain=NSURLErrorDomain...,于是去查看NSURLError-999代表是什么: ?...因此,在处理Webview加载失败回调时,要注意拦截掉被取消请求。 解决方案: 在失败方法里: ?

    3.2K40

    WKWebView 那些坑

    简单适配方法本文不再赘述,主要来说说适配 WKWebView 过程填过坑以及善待解决技术难题。...B、检测 webView.title 是否为空 并不是所有H5页面白屏时候都会调用上面的回调函数,比如,最近遇到在一个高内存消耗H5页面上 present 系统相机,拍照完毕后返回原来页面的时候出现白屏现象...在WKWebView白屏时候,另一种现象是 webView.titile 会被置空, 因此,可以在 viewWillAppear 时候检测 webView.title 是否为空来 reload 页面...WKWebView Cookie 问题在于 WKWebView 发起请求不会自动带上存储于 NSHTTPCookieStorage 容器 Cookie。...空间H5页面有透明导航、透明导航下拉刷新、全屏等需求,因此之前 webView 整个是从(0, 0)开始布局,通过调整webView.scrollView.contentInset 来适配特殊导航栏需求

    4.5K130

    WKWebView 那些坑

    简单适配方法就不细说了,本文主要讲述适配WKWebView过程填过坑以及善待解决技术难题。...1.2、检测webView.title是否为空 并不是所有页面白屏时候都会调用上面的回调函数,比如,最近遇到在一个高内存消耗H5页面上present系统相机,拍照完毕后返回原来页面的时候出现白屏现象...在WKWebView白屏时候,另一种现象是webView.titile会被置空, 因此可以在viewWillAppear时候检测webView.title是否为空来reload页面。...WKWebView Cookie问题在于WKWebView发起请求不会自动带上存储于NSHTTPCookieStorage容器Cookie。...空间H5页面有透明导航、透明导航下拉刷新、全屏等需求,因此之前webView整个是从(0,0)开始布局,通过调整webView.scrollView.contentInset来适配特殊导航栏要求。

    17.2K21

    网易严选wkwebview测试之路

    ,作为一名客户端测试人员,我更加关注主要是wkwebview各大特性背后带来测试点,以下就从测试视角分析一下替换wkwebview之后,测试遇到比较多问题:   1、首先就是cookie问题...  以前UIWebView会自动去NSHTTPCookieStorage读取cookie,但是WKWebView并不会去读取,因此导致cookie丢失以及一系列问题,在测试过程我们发现在一个活动页面触发了登录之后...2、wkwebview本地html页面加载失败   严选app内置了一份网络解决方案,如若检测到无网络状态可以查看这个本地页面进行网络配置(主要是iOS10系统刚推出时候,需要用户开启app启动网络权限才能使用问题...页面样式问题   在测试过程,替换wkwebview之后,很多APP内H5页面样式出现了兼容问题,尤其是针对iPhone X适配方面,对此我们只能全局查看各种H5页面,一一检查页面是否错乱,大部分页面的问题都是页面底部或者导航栏异常...除了测试遇到问题,测试完成之后,我们对wkwebview性能也做了简单统计,主要是为了对比wkwebview相比较于UIwebview优势在哪里,我们针对两种不同webview,在APP内进行一些正常用户行为操作

    1.7K10
    领券