LINUX.ORG.RU

Вытянуть данные с загруженой страницы

 , ,


0

1

Есть юзерскрипт, вида:

//$("body").append('<div id="myhidden"></div>');

var url="http://somepage.com/1.html"

$('#myhidden').load(url);
Суть: нужно найти на "http://somepage.com/1.html" и вывести на страницу 1 элемент и вывести на страницу, где запускается указанный юзерскрипт.

Если запустить код вида:

$('#myhidden td').each(function(i) {
 alert($(this))
 });
не входит даже в цикл.

ps. http://somepage.com/1.html и страница, с которой запускается скрипт находится на одном домене.

★★★★

Последнее исправление: ymuv (всего исправлений: 2)

А через body.onload не получится?

Кроме того, я не вижу td внутри #myhidden (или не понимаю, что должно происходить).

Kiborg ★★★
()

Ты нифига не понимаешь в яваскрипте. Читай учебники или заплати тому кто умеет.

Kalashnikov ★★★
()
Ответ на: комментарий от Anon

Kiborg
Anon
Kalashnikov

Если есть другие способы, просьба сообщить. JavaScript+jquery учу недавно.
Суть: нужно вытянуть значение с таблицы, которая находится на somepage.com/1.html и вставить его на текущую страницу.

Кроме того, я не вижу td внутри #myhidden (или не понимаю, что должно происходить).

#myhidden - это загруженная somepage.com/1.html, на которой есть таблица.

ymuv ★★★★
() автор топика
Ответ на: комментарий от ymuv

Посмотри москвичевский код «лор-панель», а еще мой форк полистай, может, поймешь, как юзерскрипты работают и чем они от «обычных» жабоскриптов отличаются.

И советую хотя бы на этапе изучения жабоскрипта всякой парашей, вроде jquery, не пользоваться! Все можно сделать проще и понятней.

Кстати, примерно нужное тебе делается у меня в лор-скрипте по кнопочке «пожаловаться модератору» (в iframe подгружается страничка с жалобами и автоматом заполняется, затем отправляется). Тебе примерно так же надо делать: в скрытом iframe подгрузить страничку, которую нужно парсить; выдрать из нее нужный элемент и воткнуть в текущую страницу.

Anon
()
Ответ на: комментарий от Anon

Кстати, примерно нужное тебе делается у меня в лор-скрипте по кнопочке «пожаловаться модератору»

а где твой скрипт? В «карточке» юзера нет

upd. https://dl.dropboxusercontent.com/u/78717568/Const_storage/LOR-panel.user.js буду разбираться

ymuv ★★★★
() автор топика
Последнее исправление: ymuv (всего исправлений: 1)

Суть: нужно найти на "http://somepage.com/1.html" и вывести на страницу 1 элемент и вывести на страницу, где запускается указанный юзерскрипт.

Такой звездатый, а про cross domain scripting не слышал, самому не стыдно?

TDrive ★★★★★
()
Ответ на: комментарий от Anon

Ну нафига этот идиотский jquery везде пихать?

Попроси взрослых дядей программистов чтобы объяснили зачем в программировании нужны библиотеки.

TDrive ★★★★★
()
Последнее исправление: TDrive (всего исправлений: 1)
Ответ на: комментарий от TDrive

Ага. Спроси индусокодеров, зачем они ради одной-двух функций тянут какой-нибудь «буст». Или при обработке изображений пользуются дебильным OpenCV…

Anon
()
Ответ на: комментарий от Anon

Ага. Спроси индусокодеров, зачем они ради одной-двух функций тянут какой-нибудь «буст».

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

Но ты продолжай писать хелло ворды и не забивай голову ерундой.

TDrive ★★★★★
()
Последнее исправление: TDrive (всего исправлений: 3)

Вам нужен один элемент из тех, что есть на странице? Используйте callback для load. Где ответ сервера вы можете фильтровать функцией .filter. Google Chrome запускает юзерскрипты с драконовскими мерами безопасности. Нужны будут кросс-доменные запросы, придётся оформлять скрипт как расширение Google Chrome. А я так понял, что в данном случае "http://somepage.com/1.html" - это адрес домена, отличающегося от тех, в страницы с которых вы будете вставлять ваш блок. Получить данные то с использованием load() получилось? Раз не входит в цикл, значит скорее всего нет. Запуск $('#myhidden').html(); в отладчике что выдаёт? Если данные в #myhidden вы получили(посмотрите в инспекторе DOM-элементов, или сделайте #myhidden видимым), то отфильтровать нужное значение не сложно. Вообще, нужно было сразу получить все td в #myhidden, и не вставлять в него ничего лишнего... Замените var url="http://somepage.com/1.html" на var url="http://somepage.com/1.html td", и в #myhidden попадут только td-элементы. Вы бы на jsfidle выложили пример того, что вы пытаетесь сделать.

lucentcode ★★★★★
()
Ответ на: комментарий от ymuv

Отличная кодировка. И что за содомия в самом скрипте?

ritsufag ★★★★★
()
Ответ на: комментарий от ymuv

Тогда всё должно работать. В #myhidden данные вставляются, или нет? В Developer Tools->Console выполнить

$("body").append('<div id="myhidden"></div>');
var url="http://somepage.com/1.html"
$('#myhidden').load(url);
$('#myhidden').html();
Не пытались? Если в #myhidden будут вложенные элементы, значит загрузка данных удалась. Пробуйте смело $.each() - всё должно работать.

Кстати, почему у вас перед $(«body»).append('<div id=«myhidden»></div>'); знак комментария(«//»)? Не в этом ли заключается причина того, что ваш код не работает? Расскомментируйте эту строку.

lucentcode ★★★★★
()
Ответ на: комментарий от Anon

Ну нафига этот идиотский jquery везде пихать?

Есть заметно лучшие средства для безболезненной и кроссплатформенной работы с DOM? VanillaJS не предлагать :)

KRoN73 ★★★★★
()
Ответ на: комментарий от Deleted

В тегах userscript

Там — тем более. Написать $('#el').html(") куда как проще, чем document.getElementById('el').innerHTML=". И это ещё очень простой случай, решающийся в лоб :) А если запрос посложнее? А если AJAX всякие?

Уж если в онлайне можно про экономию в частных случаях рассуждать, то уж в userscript — в чём профит такой экономии при жуткой потере в удобстве написания? :)

KRoN73 ★★★★★
()
Ответ на: комментарий от KRoN73

куда как проще

Да ладно? (O.o)

А если запрос посложнее?

querySelector() / querySelectorAll().

А если AJAX всякие?

Тоже не проблема.

то уж в userscript — в чём профит такой экономии при жуткой потере в удобстве написания? :)

Мы сунули жквери в ваши жквери чтобы вы могли… А потом у них всё тормозит, когда 100500 жкверей в браузере крутится :)

Deleted
()
Ответ на: комментарий от Deleted

А потом у них всё тормозит, когда 100500 жкверей в браузере крутится :)

Количество кода != скорость работы программы. <- повторять 10 раз перед сном до полного просветления.

Если у них на жквери все тормозит то и на собственных велосипедах тормозить будет.

TDrive ★★★★★
()
Ответ на: комментарий от TDrive

Потому, что в реальных проектах, за которые платят деньги

Ну, ты сам как-бы ответил.

Kalashnikov ★★★
()
Ответ на: комментарий от KRoN73

Забываем про IE, и обходимся обычным жабоскриптом.

Anon
()
Ответ на: комментарий от TDrive

Бессмысленное увеличение кода, в том числе и памяти под него != скорость. <- повторять 10 раз перед сном до полного просветления.

anonymous
()
Ответ на: комментарий от anonymous

Бессмысленное увеличение кода

Удобство, скорость написания, простота поддержки и модификации...

TDrive ★★★★★
()

GM_xmlhttpRequest

anonymous
()
Ответ на: комментарий от ymuv

А, я-то думал myhidden не заполняется. Тогда, похоже, как-то так:

$('#myhidden').load(url, function(){
		$('#myhidden td').each(function(i) {
 			alert($(this).html());
 		});
 	});

Kiborg ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.