2009-12-14 52 views
3

我想跟蹤用戶在IFrame中單擊鏈接時發生的iframe內部情況。包含iframe(父級)的頁面將通過iframe中的頁面跟蹤用戶的導航。這兩個頁面將託管在相同的頂層域,儘管子域將有所不同。如何跟蹤iframe中的用戶

我需要每一次點擊通知父頁面,但我沒有直接控制我加載到iframe中的頁面。

只要加載iframe中的頁面成爲可能,是否在所有鏈接上添加onclick?我會如何去做這件事?

這將是「模板」在其上構建:

<html> 
<script language="javascript"> 
    var currentURL; 
</script> 
<body> 
    <iframe id="container" width="500" height="500" src="http://subdomain.parentdomain.com"/> 
</body> 

回答

0

我將使用AJAX代理有內容(據瀏覽器而言)來自我的域名。這將解決CodeJoust提到的所有跨域腳本問題。由於我將產生的開銷,交付速度可能是一個問題,但這將不得不被看到。

我可能會沿着這個問題#1的行動:

"Apply 「onclick」 to all elements in an iFrame"

關於有關代理和動態改變的網頁內容的法律問題,就必須進行檢查。我認爲,從道德的角度來看,追蹤明確表示同意的用戶是沒有問題的。

3

的Iframe跨域訪問必須是同一個域名,子域名和端口。

如果你讓他們在同一個域,你可以綁定點擊所有的鏈接事件處理程序,然後當他們被點擊登錄點擊的東西像谷歌分析,數據庫等

+0

是否可以從位於domain.com/folder/file.htm中的頁面訪問:sub1.domain.com?這可能是我的答案。 對於本地版本,下面的代碼工作:http://stackoverflow.com/questions/753863/apply-onclick-to-all-elements-in-an-iframe – Paul 2009-12-15 09:17:46

-2

使用jQuery它會很容易。

$(document).ready(function(){ 
    var iframeWindow = $('#container')[0].contentWindow; 
    $(iframeWindow).load(function(){ 
     $(this).find('a').click(top.myClickHandler); 
    }); 
} 

function myClickHandler(){ 
    /* Do something */ 
} 
+0

我還沒有使用jQuery,但上述代碼不僅適用於iframe的第一頁?所有後續頁面都必須更改,以便我的網站執行應有的操作。 – Paul 2009-12-14 21:59:27

+0

它不會工作,因爲它位於不同的子域。 如果你在同一個域名上獲得iframe,你可以使用'$(parent).find('a')。click(function(){})'但是由於這個子域名而不起作用。 – CodeJoust 2009-12-15 13:31:16

+0

關於子域問題。我確實編寫了該代碼從TOP頁面開始工作。所以每當一個新頁面被加載到iframe中時,它會將一個點擊處理程序附加到該頁面上的所有錨點。這樣您就不必更改iframe中加載的每個頁面,只需更改父頁(包含)頁面即可。 – 2009-12-15 14:50:42

1

我沒有對我加載到iframe中

這是你的攔截網頁直接控制。如果您可以擴充遠程頁面中的代碼,則可以使用postMessage和iframe片段標識符來獲取瀏覽器覆蓋範圍。 幸運的是,已經有人爲你做骯髒的工作:

+0

不幸的是,增加代碼不是一種選擇。想想位於不同國家的不同部門。 我在這個方向上看到了一些黑客攻擊,事實上,發送一個字符串(當前正在單擊或顯示在iframe中的URL)就足夠了。 真的太糟糕了,我不能使用這個。 – Paul 2009-12-15 09:08:06