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


Для моего скрипта 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 на жидкости.app (который очень старый, но я должен им воспользоваться). Вам, вероятно, даже не нужно знать, что это очень похоже на Greasekit. Итак, для целей этого вопроса Вы можете просто притвориться, что это так.

Примечания

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

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

1 3

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 из вашего кода в вопросе.