2015-01-13 5 views
4

온라인 소스에서 가져온 CSS를 사용하여 UIWebView에 HTML 문자열을로드 할 수 있습니다. 내가 지금 가지고있는 문제는 클릭 한 링크의 경로를 얻는 것입니다. 나는이 사용하는 경우 :UIWebView 요청 URL 경로 얻기 (HTML 문자열)

webView.loadHTMLString(finalHtml, baseURL: baseUrl)

를 내가 경로로 클릭 수 "/"때 UIWebViewDelegateshouldStartLoadWithRequest에서 I println(webView.request?.URL.path).

나는이 사용하는 경우 :

webView.loadHTMLString(finalHtml, baseURL: nil)

나는 물론 println(webView.request?.URL.path)

, 내가 원래 웹 사이트가되도록 baseURL을 설정 한 경우 "무기 호"를 얻을 수 있지만, 내 이해에서, 경우 링크에 전체 주소가 있고 baseURL은 부적합합니다.

클릭 한 링크의 태그에 표시된 실제 경로를 얻는 방법에 대한 전문가의 의견이 있으십니까? 미리 감사드립니다 = D

EDIT 링크를 길게 누르면 표시된 올바른 링크가있는 팝업이 나타납니다. absoluteString을 포함한 모든 것을 시도했지만 여전히 경로를 얻지는 못합니다.

답변

0

를 원하는 경우 if navigationType == .LinkClicked 조건을 남겨 그 I 제 코드에서 어리석은 실수를 저질렀습니다. webView.request?.URL.path 대신 request.URL.path을 사용해야합니다. 나에게 너무 많은 고통을 안겨준 정말 작은 것. 그래서 누구나 나를 바보처럼 여기는 경우 shouldStartLoadWithRequestwebView.request 대신 request을 사용하십시오.

0

NSURL의 Documentation을 살펴보십시오.

경로 외에,

+0

작동하지 않습니다. 방금 시도 했어. 이제'baseURL'을 사용할 때 전체 URL을 얻거나 nil을 사용할 때 "about : blank"를 얻습니다. – SilverHood

+0

그리고 웹 사이트에서 링크를 클릭 한 후입니까? 페이지가 실제로로드하는 내용은 무엇입니까? –

+0

예. 링크를 클릭하면됩니다. 그것은 단지 링크가있는 정상적인 html 페이지입니다. 전혀 자바 스크립트가 없습니다 – SilverHood

1

만약 webView.loadHTMLString(finalHTML, baseURL: baseURL)println(webView.request?.URL.path)가 같은 코드 블록에서 호출하는 등 호스트, 기본 URL을 포함하는 특성 absoluteString이의 webView 아직 nil이 아닌 request 속성이되지 않습니다 따라서 요청에서 URL 경로를 가져올 수 없습니다. UIWebView은 HTML 문자열을 비동기 적으로로드 중입니다. UIWebViewDelegate을 구현하여 UIWebView에서 링크를 탭한 시간을 확인할 수 있습니다. 다음 대리자 메서드를 사용

func webView(webView: UIWebView, shouldStartLoadWithRequest request: NSURLRequest, navigationType: UIWebViewNavigationType) -> Bool { 
    if navigationType == .LinkClicked { 
     println(request.URL.path) 
    } 
    return true 
} 

그래서 모든 사람의 눈을 회피 보인다는 등, 앞으로, 뒤로 탐색을 포함하여 모든 요청의 경로를 볼 수

+0

물론이 'UIWebViewDelegate'를 구현하여 경로를 확인했습니다. 그냥 작동하지 않습니다. – SilverHood