【发布时间】:2021-06-16 03:59:21
【问题描述】:
我正在使用WKWebView 来显示一个网站,其中包含一些包含三个按钮的 HTML。单击特定按钮时,我想在本机应用程序中运行一些 Swift 代码。
关于 HTML
三个按钮如下所示:
<input type="button" value="Edit Info" class="button" onclick="javascript:GotoURL(1)">
<input type="button" value="Start Over" class="button" onclick="javascript:GotoURL(2)">
<input type="button" value="Submit" class="button" onclick="javascript:GotoURL(3)">
他们调用的GotoURL 函数如下所示:
function GotoURL(site)
{
if (site == '1')
document.myWebForm.action = 'Controller?op=editinfo';
if (site == '2')
document.myWebForm.action = 'Controller?op=reset';
if (site == '3')
document.myWebForm.action = 'Controller?op=csrupdate';
document.myWebForm.submit();
}
当前WKWebView 实施
当我点击 webview 中的任何按钮时,我的WKNavigationDelegate 上会调用此函数:
func webView(_ webView: WKWebView, didStartProvisionalNavigation navigation: WKNavigation!) {
// ...?
}
当然,navigation 是不透明的,因此不包含有关用户单击了三个按钮中的哪一个的信息。
检测此按钮何时被点击的最简单方法是什么?
我想在用户点击提交并忽略其他按钮按下时做出响应。
我在 Stack Overflow 上看到了一些使用 WKUserContentController 的其他方法,但它们似乎需要网站调用类似的东西:
window.webkit.messageHandlers.log.postMessage("submit");
我不控制这个网站,所以我不能在它的源代码中添加这一行,我不知道使用WKWebView将它注入到正确位置的最佳方法。
【问题讨论】:
标签: javascript ios swift wkwebview