2011-03-12 59 views
-3

這是一個討厭的問題。從JavaScript觸發目標= _blank鏈接

我有一個外部鏈接。

<a href="http://www.example.com" target="_blank"> 

現在我想在每次點擊鏈接時跟蹤Google AdWords轉化。

爲此,我添加了一個加載Google圖像的click事件。圖像計算轉換。爲了確保在用戶離開之前加載圖像,我使用圖像的load事件繼續處理原始鏈接的目標。

$("#linkname").click(function() { 

var element = document.createElement("img"); 
element.onload = function() { ..... }; 
element.setAttribute("src", "http://www.googleadservices.com/...."); 
document.body.appendChild(element); 

}); 

這將工作正常使用location.href。但是,它不適用於target="blank"鏈接。 我很困惑要打開一個新窗口,需要將哪些內容放入onload函數中。

  • 我不能使用window.open因爲它會通過彈出窗口攔截捕獲(因爲它位於圖像的onload事件,它類似於一個無關的鏈接是一個純粹的程序化調用)另外,在沒有任何選項的情況下調用window.open並不會在Google Chrome中給我任何控制權。

  • 我不能讓click事件繼續它的正常過程,因爲我必須等待圖像加載,這是一個異步操作!

我需要什麼,本質上,是打開一個target="_blank"鏈接程序,一些可能是不可能的,因爲它可以通過彈出阻滯劑斷路器被規避的方式。

或者,我需要一種方法來可靠地計數點擊,同時讓鏈接的原始click事件繼續按照它的設想。

有沒有人有想法該怎麼辦?

+0

由於鏈接在新窗口中打開,因此您無需等待圖像加載。讓圖像在當前窗口中加載(按原樣完成)並讓用戶正常看到新窗口。在加載圖像之前用戶可能不可能關閉窗口,因此計數不會受到干擾。 – 2011-03-12 01:54:39

+0

@amit是我剛纔的**精確**實現。總的情況是過度複雜:)隨意添加,作爲答案。 – 2011-03-12 01:55:55

+1

有時我們需要第二雙眼睛:) – 2011-03-12 01:58:44

回答

3

由於鏈接在新窗口中打開,因此您無需等待圖像加載。讓圖像在當前窗口中加載(按原樣完成)並讓用戶正常看到新窗口。在加載圖像之前用戶可能不可能關閉窗口,因此計數不會受到干擾。

0

我不知道這是否會如果可以的話(因爲一些要求)工作或做,但:

嘗試打開沒有位置的新窗口,但真正的單擊事件(而不是在),但打開寬度和高度爲0的窗口,並將其x和y放在用戶看不到的地方,或儘可能不太明顯。 保留對此窗口的引用。

在圖像的onload事件中,更改新窗口url的位置,然後調整大小並重新定位新窗口。

希望它有效。

+0

原來我完全過分的問題:請參閱上面的@ amit的評論,我可以直接進行鏈接,無需等待。無論如何感謝您的時間! – 2011-03-12 01:56:47