如何在IOS中获取任何标签的自定义属性的正确值?

时间:2017-07-19 07:05:37

标签: javascript ios objective-c uiwebview

情况:

通过单击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&#39;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中执行此操作?

提前致谢..!

1 个答案:

答案 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)