2012-12-18 86 views
1

我想列出帶有分類廣告的iframe。有時供應商會在該項目不再可用時將頁面重定向到其主頁。我希望能夠識別這一點,這樣我就可以假定已售出的商品進行索引。什麼是完成這個最好的方法?如何檢測iFrame是否被重定向到另一個url?

+0

從我可以告訴,這是不可能的好處。您只能在iframe參考託管在您的域上的內容時才能執行此操作。 – Blender

回答

0

當iframe位於不同的域中時,您將無法檢測iframe的位置,除非它們爲CORS設置了正確的標頭。

不必擔心其他域的唯一方法是讓您的服務器端代碼在頁面上運行檢查並查看它是否重定向。

2

您可以使用jQuery的加載函數來觸發onload或重新加載。

http://api.jquery.com/load/

您將需要存儲的時間的iframe已重新加載的數量。

喜歡的東西,

var reloaded = 0; 
$("#iframe_id").load(function(){ 
    reloaded++; 
}); 
+0

不會在另一個域上工作。 – epascarello

+0

真的嗎?這只是一個內容加載的事件,無論其來源如何。 – shapeshifter

+0

似乎重定向響應不會觸發加載事件,只會觸發最終響應。 – Rm558

0

在幀載荷,檢測什麼URL是:

var frameLoadCount = 0; 
var firstURL; 

$('iframe').load(function() { 
    if (frameLoadCount === 0) { 
     firstURL = $(this).attr('src'); 
    } else { 
     if (firstURL !== $(this).attr('src')) { 
      // The iframe has been redirected. 
     } 
    } 
}); 

基本上上面的代碼運行每次的IFRAME加載,檢查它是否是第一次,如果是,則將URL分配給一個變量。如果它已加載多次,請檢查原始網址是否與當前網址匹配。

這是不同於如果它的加載不止一次只是檢查,因爲你可以針對具體來源等

+1

不適用於其他域 – epascarello

+1

除非它們允許跨域調用。簡單地說「不要在另一個域上工作」是無用的,因爲它不正確。它可以在另一個域上工作,如果允許的話。 – Ojame

+0

我敢打賭,大多數網站在默認情況下都不啓用CORS。 – epascarello

相關問題