3

對於我的類似Greasemonkey的腳本,我已經在Amazon.co.uk上加載了一個https頁面,我希望在鏈接頁面上顯示一個項目的價格。如何解析嵌入式iFrame以僅顯示iframed頁面中的片段?

我已經做至今:

tried to use an 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,只顯示價格嗎? (或者,如果不說的the page一個非常小的部分)

,我想顯示的關鍵信息,在這個例子中,是£2.85

背景:我使用的是類似Greasemonkey的東西

這是Greasekit Fluid.app(這是非常古老的,但我必須使用它)。您可能甚至不需要知道它與Greasekit非常相似。所以,爲了這個問題的目的,你可以假裝它是。

兩個源頁面和iframed網頁上是https://amazon.co.uk *。我無法鏈接到它,因爲它需要我,特別是登錄。

如果你願意,你可以訪問a mirror of the page on dropbox。顯然,由於同源策略,東西可能無法在此鏡像中運行。

回答

1

提供的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線之後,從您的代碼中的問題。

+0

謝謝,這完美的作品,感謝您的專業知識。如果不是解析原始iframe,而是想要第二個(重複)iframe並且解析它?我是否創建一個新的iframe來爲其分配新的ID? (顯然我會調整CSS來調整它的位置) –

+0

問題2(與上面無關) - 我喜歡這個輸出如何我想要的,這很棒。我可以做一些調整以改變價格嗎?(我不認爲我可以重寫iFrame中的CSS來使文本變得龐大?) –

+0

*我嘗試添加''font-size「; \t「500%」'但它並沒有奏效,唉(這是在黑暗中拍攝的!) –

相關問題