>情况:
通过单击UIWebview中的超链接获取错误数据。 所以想知道正确的代码,并需要帮助来纠正我犯错的地方。
预期结果:获取Web视图中所选超链接的data_cascade_uid,这是标签的自定义属性
示例:我在下面写了html代码块以将内容显示到UIWebview中
HTML 代码块
<p>Code OB is <a data-cascade-uid="98170f1e-d213-4dbf-a1a6-6d6fcc5142ba" href="">coming soon</a>; If there is an Obstetrical <a data-cascade-uid="376f52bf-789c-4cea-b0d8-f2cffef1e4a2" href="">Emergency</a> please call Women's and Babies Dept..at SCS.</p>
尝试使用 Web 视图委托方法以这种方式访问 url
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType{
if (navigationType == UIWebViewNavigationTypeLinkClicked){
NSURL *url = request.URL;
//if valid url then move to browser
if ([request.URL.scheme isEqualToString:@"https"] || [request.URL.scheme isEqualToString:@"http"]) {
[[UIApplication sharedApplication] openURL:url];
return NO;
}
else
{
// getting Wrong data like this applewebdata://D0D0AF87-4369-4E26-9AD2-6971A37FD571.
}
return YES;
}
return YES;
}
在此代码中,代码中有 2 个超链接。因此,当用户单击任何链接进入Web视图时,我想获得可点击链接的关联data_cascade_uid。但是当我单击任何链接到WebView时,我得到了错误的数据。
任何人都可以帮助我编写代码或为我提供代码片段如何在iOS中执行此操作?
提前感谢..!
您可以侦听所有链接单击并触发自定义导航请求,该请求在实现的shouldStartLoadWithRequest
方法中侦听。请注意,您首先需要在应用中注册 URL 方案(例如myurlscheme
(,这非常简单,可以在 Xcode 中项目的"信息"选项卡中完成。
document.addEventListener('click', function(e) {
if (e.target.tagName != 'a' && e.target.tagName != 'A') {
return
}
window.location = 'myurlscheme://somehost?data=' + e.target.getAttribute("data-cascade-uid")
}, false)