情况:
通过单击UIWebview中的超链接获取错误数据。所以想知道正确的代码,并需要帮助来纠正我犯错的地方。
预期结果:获取网络视图中所选超链接的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中执行此操作?
提前致谢..!
答案 0 :(得分:0)
您可以收听所有链接点击,并在您实施的shouldStartLoadWithRequest
方法中触发您收听的自定义导航请求。请注意,您首先需要在应用中注册一个网址方案(例如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)