繁体   English   中英

新 Window 在将 target="_blank" 与 onclick 一起使用时无法打开

[英]New Window not Opening when using target="_blank" with onclick

总结: 1.需要新开一个window来展示一个第三方的调查。
2. 不能使用 JavaScript 打开 window(当前使用 target="_blank")。 3. 必须使用 JavaScript 来跟踪点击(当前使用 onclick)。 4. 原始 window 不能在点击时更改其内容。

我有一个 JSP 试图在新的 window 中启动第三方调查。最初,代码是这样启动新的 window 的:

<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。 它导致了 Chrome 的安全问题。 类似于“不安全的 JavaScript 尝试访问加载一个域的框架(新窗口),而它的来源是另一个域。 我的解决方案是使用 HTML 打开 window,如下所示:

<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>

问题是,它没有在新的 window 中打开。在调试过程中,我从上面的代码中删除了 onclick,它确实在新的 window 中打开。我不确定它是否是 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>

...或者是否只是在同一个锚标记中使用目标和 onclick 的问题。 有什么想法吗?

我在其他地方进行了研究,在 Stack Overflow 上,我发现了以下结果,但似乎没有一个能解决这种情况。 举些例子):

这在某种程度上有所帮助,因为我能够测试“return false”的删除。 这与“user1223427”的结果相同——它在两个不同的 windows 中呈现相同的页面。它没有帮助,因为我需要一种非 JavaScript 的方式来打开目标 URL(由于提到的安全问题)。 OnClick 用于谷歌分析和目标 _blank。 链接失效了?

这个没有帮助,因为我没有使用 JQuery 并且我不了解 JQuery 解决方案与我的情况select onclick 之间的联系,其中包含 _blank

这仅适用于使跟踪代码正常工作,不适用于新的 window 开放问题: Google Analytics - 下载点击跟踪

我认为这个会有很好的结果,但它的解决方案是 JS 的。 在 Google Analytics 中打开新的 window 中的链接时,外部链接跟踪中存在错误?

recordOutboundLink function 正在打开链接。

//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 function 以调用 window.open 而不是 document.location

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM