Как я могу разобрать встроенный iFrame, чтобы показать только фрагмент со страницы iframed?

Для моего скрипта, похожего на Greasemonkey, я загрузил страницу https на Amazon.co.uk и хочу показать цену товара на связанной странице.

Что я делал до сих пор:

Я попытался использовать iFrame для отображения окна:

var prodLinks = $("td.product_description a:contains('View Amazon Product Page')");
if (prodLinks.length) {
var iframeSrc = prodLinks[0].href;
iframeSrc = iframeSrc.replace (/http:\/\//, "https://")
    $("body").append ('<iframe id="gmIframe" src="' + iframeSrc + '"></iframe>');


$("#gmIframe").css ( {
    "position":     "absolute",
    "bottom":       "1em",
    "left":         "2em",
    "height":       "25%",
    "width":        "84%",
    "z-index":      "17",
    "background":   "#00FF00"
} );
}

Проблема этого подхода заключается в том, что, хотя иногда он работает, содержимое iFrame слишком загромождено, поэтому я не могу сразу увидеть, что мне нужно.

То, что я хочу видеть мгновенно: £2,85

Давайте предположим, что связанная страница https://www.amazon.co.uk/gp/product/B001AM72BM/

Соответствующий фрагмент HTML с вышеупомянутой страницы:

<tr id="actualPriceRow">
<td id="actualPriceLabel" class="priceBlockLabelPrice">Price:</td>
<td id="actualPriceContent"><span id="actualPriceValue"><b class="priceLarge">£2.85</b></span>
<span id="actualPriceExtraMessaging">

Как именно я могу разобрать iFrame, чтобы отображалась только цена? (или, если не это, очень маленькая часть страницы)

Ключевая информация, которую я хочу отобразить, в этом примере составляет £ 2,85

Фон: я использую что-то похожее на Greasemonkey

Это для Greasekit на Fluid.app (который очень старый, но я должен его использовать). Вы, вероятно, даже не должны знать это, поскольку это очень похоже на Greasekit. Таким образом, для целей этого вопроса, вы можете просто притвориться, что это так.

Заметки

Страница источника и страница iFramed - https://amazon.co.uk/ * . Я не могу дать ссылку на него, так как это потребует от меня, в частности, входа в систему.

Если вы хотите, вы можете посетить зеркало страницы на Dropbox. Очевидно, что вещи могут не работать в этом зеркале из-за политики того же происхождения.

1 ответ

Решение

При условии, что iframe- это тот же домен (что, по-видимому, верно в вашем случае), тогда вы анализируете iframe, ожидая его загрузки, а затем используете jQuery для поиска и манипулирования его содержимым,

Здесь мы хотим найти <b class="priceLarge">£2.85</b> узел и удалить все остальное.

Код для всего этого:

$("#gmIframe").load ( function () {
    var ifrmJQ      = $("#gmIframe").contents ();
    var targNode    = ifrmJQ.find (".priceLarge");
    var ifrmBody    = ifrmJQ.find ("body");
    ifrmBody.empty ();
    ifrmBody.append (targNode);
} );


Вы должны разместить этот блок кода сразу после $("body").append ('<iframe Строка, из вашего кода, в вопросе.

Другие вопросы по тегам