Javascript 使用target=";时新窗口未打开_“空白”;一丝不苟

Javascript 使用target=";时新窗口未打开_“空白”;一丝不苟,javascript,html,onclick,analytics,Javascript,Html,Onclick,Analytics,总结: 1.需要打开新窗口以显示来自第三方的调查。 2.无法使用JavaScript打开窗口(当前使用target=“\u blank”)。 3.必须使用JavaScript跟踪单击(当前使用onclick)。 4.原始窗口在单击后不得更改其内容 我有一个JSP,它试图在新窗口中启动第三方调查。最初,代码是这样启动新窗口的: <a id="customer_survey_button" href="#" target="_blank" onclick="recordOutboundLin

总结: 1.需要打开新窗口以显示来自第三方的调查。
2.无法使用JavaScript打开窗口(当前使用target=“\u blank”)。 3.必须使用JavaScript跟踪单击(当前使用onclick)。 4.原始窗口在单击后不得更改其内容

我有一个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>
<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>

它在FF中工作,但在Chrome中不起作用。这导致了Chrome的安全问题。类似于“不安全的JavaScript试图访问加载一个域的框架(新窗口),而其源是另一个域。我的解决方案是使用HTML打开窗口,如下所示:

<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>
<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在同一个锚标记中,有什么想法吗

我在别处进行了研究,在堆栈溢出方面,我发现了以下结果,但似乎没有一个能解决这种情况。例如:

这在某种程度上有所帮助,因为我能够测试“return false”的删除。这与“user1223427”的结果相同——它在两个不同的窗口中呈现相同的页面。 它没有帮助,因为我需要一种非JavaScript的方式来打开目标URL(由于提到的安全问题)。

这一个没有帮助,因为我没有使用JQuery,我不理解JQuery解决方案和我的情况之间的联系

这仅适用于使跟踪代码正常工作,而不适用于打开新窗口时出现的问题:

我原以为这会有一个很好的结果,但它的解决方案是JS的。

recordOutboundLink函数正在打开链接

//This is changing the URL to the href of the link you clicked    
setTimeout('document.location = "' + link.href + '"', 100) 
第二个示例是onclick事件返回false。这将阻止锚标记执行其正常行为

如果注释掉setTimeout行,并从onclick中删除return false,则应该可以看到该链接的行为符合您的要求


您还可以修改setTimeout函数,以调用window.open而不是document.location

注释掉并删除返回值false!现在我需要看看注释掉setTimeout会有什么影响(此函数到处调用,因此我可能需要为此调查按钮创建一个特定的函数)。我还创建了一个单独的函数(recordOutboundLinkOpenWindow),并将setTimeout更改为将document.location替换为window.open,而不是对整行进行注释。这非常好。谢谢!希望我有15个声誉,这样我就可以提高您的响应了!