2012-04-06 144 views
3

摘要: 1.需要打開一個新窗口來顯示來自第三方的調查。
2.不能使用JavaScript(目前使用的目標=「_空白」,打開窗口。 3.必須使用JavaScript(目前使用的onclick)追蹤點擊次數 4.原來的窗口一定不能在點擊更改其內容。當onclick使用target =「_ blank」時無法打開新窗口

我有一個試圖推出一個新的窗口第三方調查一個JSP原來,代碼是推出這樣的新窗口:。

<a id="customer_survey_button" href="#" target="_blank" onclick="recordOutboundLink(this, 'Outbound Links', 'blah.com');openChildWindow('http://www.blah.com/f.asp?etcetera','TAKE SURVEY');return false;" class="genbut">TAKE SURVEY</a> 

它的工作在FF,但不是鍍鉻它造成Chrome的一個安全問題,就像'不安全的JavaScript嘗試訪問加載一個域的框架(新窗口),而它的起源n是另一個域。我的解決辦法是打開使用HTML窗口,像這樣:

<a id="customer_survey_button" href="http://www.blah.com/f.asp?etcetera" target="_blank" onclick="recordOutboundLink(this, 'Outbound Links', 'blah.com');return false;" class="genbut">Take Survey</a> 

的問題是,未在新窗口中打開。在調試過程中,我從上面的代碼中刪除了onclick,並且它在新窗口中打開。我不確定它在JS代碼中是否出錯...

<script type="text/javascript"> 
<!-- 
var pageTracker = _gat._getTracker("<%=googleTrackerId%>"); 
pageTracker._initData(); 
pageTracker._trackPageview(); 

function recordOutboundLink(link, category, action) { 
    try {  
    pageTracker._trackEvent(category, action); 
    setTimeout('document.location = "' + link.href + '"', 100) 
    }catch(err){} 
} 
// --> 
</script> 

...或者它只是在同一個錨標記中使用target和onclick的問題。有什麼想法嗎?

我研究了其他地方,並在堆棧溢出,我發現了下面的結果,但似乎沒有解決這種情況。例如:

這有助於一種方式,因爲我能夠測試刪除「返回false」。這與「user1223427」的結果相同 - 它在兩個不同的窗口中呈現相同的頁面。 它沒有幫助,因爲我需要一個非JavaScript的方式來打開目標URL(由於提到的安全問題)。 OnClick for google analytics and target _blank. The link does not work?

這一次沒有幫助,因爲我沒有使用jQuery和我不明白JQuery的解決方案,我的處境之間的連接 select onclick that contains _blank

這僅適用於獲得跟蹤代碼工作,沒有問題的新窗口打開: Google Analytics - Download clicks tracking

我認爲這一個會有一個很好的結果,但它的解決方案是一個JS之一。 Bug in external link tracking when opening the link in a new window in Google Analytics?

回答

4

recordOutboundLink函數打開鏈接。

//This is changing the URL to the href of the link you clicked  
setTimeout('document.location = "' + link.href + '"', 100) 

你的第二個例子是從onclick事件返回false。這將阻止錨標記執行正常行爲。

如果您註釋掉setTimeout行,並從onclick中刪除返回false,您應該會看到該鏈接的行爲如您所願。

您還可以修改setTimeout函數來調用window.open而不是document.location

+0

註釋掉和刪除返回false工作!現在我需要看看註釋setTimeout會有什麼影響(這個函數被調用到所有地方,所以我可能需要爲這個調查按鈕創建一個特定的按鈕)。 – ckpop 2012-04-06 21:23:52

+0

我還創建了一個單獨的函數(recordOutboundLinkOpenWindow),並更改了setTimeout以用window.open替換document.location,而不是將整行註釋掉。這是完美的。謝謝!希望我有15個聲望,所以我可以將你的反應提高! – ckpop 2012-04-06 21:28:55

+0

沒問題。樂意效勞。 – 2012-04-06 21:54:05

相關問題