3

私の Greasemonkey のようなスクリプトでは、Amazon.co.uk で https ページを読み込んでおり、リンクされたページに商品の価格を表示したいと考えています。

私がこれまでやってきたこと:

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に似たものを使用しています

これは Fluid.app の Greasekit 用です(これは非常に古いですが、使用する必要があります)。グリースキットと非常に似ているため、おそらくそれを知る必要さえありません。したがって、この質問の目的のために、そうであるふりをすることができます.

ノート

ソースページと iFrame ページはどちらもhttps://amazon.co.uk * です。具体的にはログインが必要になるため、リンクできません。

必要に応じて、ドロップボックスのページのミラーにアクセスできます。明らかに、同一オリジン ポリシーのため、このミラーでは機能しない可能性があります。

4

1 に答える 1

1

iframeが同じドメインである場合 (これはあなたの場合に当てはまるようです)、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このコード ブロックは、質問のコード の行の直後に配置します。

于 2013-11-27T09:12:02.287 に答える