Я работаю над расширением Chrome, которое при определенных условиях выполняет запрос $.ajax()
, а затем использует информацию об определенных элементах в возвращаемом HTML
. На данный момент я просто пытаюсь получить доступ к определенному элементу и зарегистрировать его на консоли, чтобы убедиться, что он работает правильно.JQuery .find() не удалось получить результат .ajax()
Для начала я уверен, что HTML
успешно восстановлен. Когда я регистрирую результат напрямую, результат идентичен результату, когда я просматриваю источник страницы в Chrome. Я также пробовал использовать $.parseHTML()
, который при входе в систему дает мне массив детей верхнего уровня. Использование селекторов возвращает массив непосредственных дочерних элементов, соответствующих селектору, но они не работают для элементов, являющихся дочерними элементами этих детей (и т. Д.).
Я уже рассмотрел несколько сообщений и попробовал различные вещи, такие как использование $(<selector>,<context>)
, $(<result>).filter(<selector>)
и $(<result>).find(<selector>)
безрезультатно. Каждый раз, когда я пытаюсь записать их, я получаю объект длиной 0
.
$.ajax({jsonp: false, dataType: "html",url: getUWFlowLink($(this).attr('href')), success: function(siteHTML){
console.log($("p.description",siteHTML));
console.log($("p.description",$.parseHTML(siteHTML)));
console.log($(siteHTML).find("p.description"));
console.log($($.parseHTML(siteHTML)).find("p.description"));
console.log($(siteHTML).filter("p.description"));
console.log($($.parseHTML(siteHTML)).filter("p.description"));
}});
Все эти журналы просто возвращают объекты с длиной 0
. Попытка регистрации журнала .html()
приводит к выводу undefined
, и при попытке зарегистрировать результаты .text()
в пустой строке для вывода. Образец страницы, для справки - here. Элемент, к которому я пытаюсь получить доступ, - это описание в верхней части («Химические принципы с приложениями ...»), а его расположение в HTML (на несколько уровней) можно найти, проверив элемент.
Может у вас есть проблемы перекрестного происхождения? – Malvolio
Я не совсем уверен - это мой первый опыт работы с JQuery, не говоря уже о chrome dev и ajax. Но, насколько мне известно, с расширением хром кросс-начало возможно, когда сайт помещается в разрешения манифеста, и вы указываете 'jsonp:" false "'. HTML, кажется, извлекается успешно, хотя я не на него 100%. – MattDs17
Если вы загружаете свой HTML-файл из другого домена, чем это делает вызов ajax, и у вас нет специальной настройки на сервере, вы получите проблемы с перекрестным происхождением. Данные перейдут в браузер, но браузер не позволит использовать javascript. – Malvolio