2017-07-19 64 views
0

情況:如何獲得IOS中任何標籤的自定義屬性的正確值?

通過單擊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> 

試圖訪問url以這種方式使用web查看委託方法

- (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

您可以收聽所有鏈接點擊並觸發您在執行的shouldStartLoadWithRequest方法中偵聽的自定義導航請求。請注意,您首先需要在您的應用程序中註冊一個URL Scheme(例如myurlscheme),這很簡單,並在Xcode的項目的Info選項卡中完成。

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) 
+0

感謝您的回答。我可以在哪寫這段代碼? –

+0

您可以刪除空白區域,並將這段代碼作爲字符串注入「did load」事件的Web視圖中。用於將其注入到Web視圖中的方法稱爲'stringByEvaluatingJavaScriptFromString',或類似的東西。 – paulvs

+0

的NSString * DATAS = [NSString的stringWithFormat:@」 \ n \ n \ n \ n \ n <腳本型= \ 「文本/ JavaScript的\」> document.addEventListener( '點擊',函數(例如){if(e.target.tagName!='a'&& e.target.tagName!='A'){return} window.location ='atlas:// somehost?data ='+ e.target.getAttribute( 'data-cascade-uid')},false)\ n \ n​​\ n \ n「,finalHTML]; –

相關問題