2015-01-13 5 views
4

Я могу загрузить строку HTML в UIWebView с помощью CSS, полученного из онлайн-источника. Теперь проблема заключается в том, чтобы получить путь к ссылке, которая была нажата. Если я использую это:UIWebView получить URL-адрес запроса запроса (строка html)

webView.loadHTMLString(finalHtml, baseURL: baseUrl)

Я получаю путь щелкнул быть «/», когда я println(webView.request?.URL.path) в UIWebViewDelegateshouldStartLoadWithRequest.

Если я использую это:

webView.loadHTMLString(finalHtml, baseURL: nil)

я получаю «ноль», когда я println(webView.request?.URL.path)

Конечно, я поставил baseURL быть оригинальный сайт, но из моего понимания, если ссылка имеет полный адрес, baseURL не имеет значения.

Любые профи вне зависимости от того, как получить фактический путь, указанный в тегах ссылки, которая была нажата? Заранее благодарю = D

EDIT Когда я нажму на ссылку, появится всплывающее окно с указанием правильной ссылки. Я пробовал все, в том числе absoluteString, но я все равно не пойду.

ответ

0

Таким образом, кажется, что она ускользает от всех на глазах, что я сделал глупую ошибку в моем коде. Вместо webView.request?.URL.path, я должен использовать request.URL.path. Действительно маленькая вещь, которая вызвала у меня столько мучений. Поэтому, если кто-то так глуп, как я, в вашем shouldStartLoadWithRequest используйте request вместо webView.request.

0

Посмотрите на Documentation для NSURL.

Кроме того пути, есть свойство absoluteString, который включает в себя множество, базовый URL и т.д.

+0

Не работает. Просто попробовал. Теперь я либо получаю полный URL-адрес, когда я использую 'baseURL', или я получаю« about: blank », когда использую nil – SilverHood

+0

И это после нажатия ссылки на веб-сайте? Какой контент загружает страница? –

+0

Да. Это после того, как я нажму ссылку. Это просто обычная html-страница со ссылками. Нет javascript вообще – SilverHood

1

Если webView.loadHTMLString(finalHTML, baseURL: baseURL) и println(webView.request?.URL.path) называются в том же блоке кода, то webView не будет иметь не-ноль 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 
} 

оставить вне if navigationType == .LinkClicked условный, если вы хотите, чтобы увидеть путь всех запросов, включая навигацию назад, вперед и т.д.

+0

Конечно, я уже реализовал этот 'UIWebViewDelegate', чтобы проверить путь. Он просто не работает – SilverHood