我需要检测用户使用WebKit的表单提交操作。
到目前为止,我可以用navigationAction.navigationType
== WKNavigationTypeFormSubmitted
检查一个动作是否是表单提交。
问题是,第一次提交后重定向的URL可能有navigationType
WKNavigationTypeFormSubmitted
,我不希望结果中出现这些。
我还知道我可以检查导航是否重定向到 webView:didReceiveServerRedirectForProvisionalNavigation:
但我不知道如何将这两个方法连接在一起使其工作。
1条答案
按热度按时间c3frrgcw1#
使用这种方法,您可以检测用户的初始表单提交,并忽略具有相同导航类型的任何重定向URL。
首先,设置一个布尔变量来跟踪表单是否已由用户提交。例如,您可以调用此变量“formSubmittedByUser”并将其初始化为false。
然后,在webView:decidePolicyForNavigationAction:decisionHandler中:方法,检查navigationType是否为WKNavigationTypeFormSubmitted,以及formSubmittedByUser变量是否为false。如果两个条件都为true,则将formSubmittedByUser变量设置为true,并继续处理表单提交。
在webView:didReceiveServerRedirectForProvisionalNavigation中:方法,检查formSubmittedByUser变量是否为true。如果为真,那么您知道当前导航是来自初始表单提交的重定向URL。然后可以将formSubmittedByUser变量重置为false,以便它可以检测用户的下一次表单提交。