2015-11-16 12 views
0

Я пытаюсь получить URL-адрес из класса сНа Использования JavaScriptизвлечение URL из класса сНа с JavaScript

<div class="img-cover" style="background-image: url('https://scontent.cdninstagram.com/hphotos-xta1/t51.2885-15/s320x320/e15/11420829_845417035570963_433708785_n.jpg')"></div> 

я эта страница загружается в UIWebView на прошивке, http://websta.me/popular

я пытаюсь получить все URL изображения, я посмотрел на исходной странице и обнаружил, что все изображения мне нужно, загружаются в DIV класса в качестве фонового изображения, как в примере выше

я использовал document.getElementsByClass но Безразлично Не работай.

Я хочу, чтобы реализовать это в приложение IOS, чтобы получить URL изображения из UIWebView и сохранить в NSArray

+2

Покажите нам, что вы пробовали до сих пор. – blm

+0

@blm NSString * someHTML = [MywebView stringByEvaluatingJavaScriptFromString: @ "document.getElementsByClassName ('img-cover') [0] .innerHTML;"]; NSLog (@ "Images:% @", someHTML); – Joe

+1

Добавьте это к вопросу, а также некоторое указание на то, что это делает. «не работает» недостаточно, быть * конкретным *. Тем не менее, я замечаю, что вы используете innerHTML, а пример, который у вас есть, не имеет никакого внутреннегоHTML. – blm

ответ

2

Чтобы получить строку из class имени:

NSString *someHTML = [theWebView stringByEvaluatingJavaScriptFromString:@"document.getElementsByClassName('class name')[0].innerHTML;"]; 
+0

, он не работает. Я заменил «имя класса» img-cover и doest work .. может быть, потому что у меня много классов с тем же именем? – Joe

-2

Это может быть полезно, чтобы получить то, что вы ищете:

var myLinks = document.getElementsByTagName ("a");

Дайте Див идентификатор, как это:

Затем в сценарии вы можете вспомнить URL с выше и заменить «а» с именем, которое вы выбрали для дел.

+1

У меня нет тегов 'a'.все у меня много

, и я хочу получить эти URL-адреса – Joe

0

Идущ пример <div> тега в вопросе, вы хотите:

NSString *someHTML = [MywebView stringByEvaluatingJavaScriptFromString:@"document.getElementsByClassName('img-co‌​ver')[0].style.backgroundImage;"]; 

Пример кода вы дали в ваш комментарий использует .innerHTML. Однако ваш тэг <div> не имеет внутреннего HTML. Внутренний HTML - это HTML между началом и соответствующим тегом конца, поэтому, если у вас есть <div>hello</div>, внутренний HTML-код, появляющийся в свойстве .innerHTML этого элемента, будет hello. В вашем примере URL-адрес фактически находится в атрибуте style<div>, поэтому вы хотите получить его с помощью .style, тогда вы хотите, чтобы стиль background-image находился в собственности backgroundImage объекта style.

Однако обратите внимание, что страница, которую вы указать не имеет изображения в <div> теги, он имеет их в якорей (<a> метки), так что вы, возможно, придется немного изменить этот код, но они все еще имели URL вы хотите в стиле background-image в атрибуте style, так что часть остается неизменной.

+0

строка не возвращает никакого значения .. Я пробовал это: NSString * imageURLString = [MywebView stringByEvaluatingJavaScriptFromString: @ "(function() {var images = document. getElementsByClassName ('img-co ver') [0] .style.backgroundImage; var imageUrls = []; []. forEach.call (изображения, функция (el) {imageUrls [imageUrls.length] = el.url;}); return JSON.stringify (imageUrls);})() "]; – Joe

+0

Вы уверены, что класс img-cover правильный? Когда я смотрю на страницу, на которую вы ссылаетесь в своем вопросе, с этим классом ничего нет (строка вообще не отображается в источнике страницы). Вот что я вижу сейчас: '' (Я удалил href, потому что он сделал комментарий слишком длинным). Возможно, попробуйте сделать один шаг за раз, просто получите элемент, посмотрите, работает ли это и т. Д. – blm

Смежные вопросы