Javascript 使用target=";时新窗口未打开_“空白”;一丝不苟
总结: 1.需要打开新窗口以显示来自第三方的调查。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
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个声誉,这样我就可以提高您的响应了!