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(它很旧,但我必须使用它)。您可能甚至不需要知道这一点,因为它与 Greasekit 非常相似。所以,为了这个问题的目的,你可以假装它是。

笔记

源页面和 iFramed 页面都是https://amazon.co.uk * 。我无法链接到它,因为它需要我,特别是登录。

如果需要,您可以访问dropbox 上页面的镜像。显然,由于同源策略,某些东西可能无法在这个镜像中工作。

4

1 回答 1

1

如果iframe 是同域的(在您的情况下似乎是真的),那么您可以通过等待 iframe 加载然后使用 jQuery 搜索和操作其内容来解析 iframe,

在这里,我们要找到<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 回答