点击后,它“重定向”到两个页面,因为<a>标签有target属性为_blank——href属性中的URL将在新窗口中打开并显示当前窗口其 URL 在 onclick 处理程序中定义的页面。
通常,当点击链接并访问另一个页面时,新页面需要显示在当前窗口中。在这种情况下,target="_blank" 应该被删除。
为了发送跟踪请求并同时显示新页面。有3种解决方案:
解决方案1. 在当前页面,当点击链接时,发送track request,稍等片刻后,重定向到新页面。这一切都发生在 JavaScript 中,没有 target="_blank",href 中没有 URL。
例如:
<a href="javascript:;" onclick="visitPageX()">link</a>
function visitPageX() {
// send Ajax request to the track URL
setTimeout(function() {
location.href = 'http://{pageXURL}';
}, 300);
}
请注意时间间隔(在上面的代码中,它是300ms)取决于网络应用程序的网络环境。如果它太小,在页面重定向之前将不会发送用于跟踪的 HTTP 请求。如果它太大,设计效果(如微调器)可能会有所帮助。之所以使用这个时间间隔,是因为对于跟踪请求,页面不需要等待它的响应,只要保证请求发送并且一切正常。
解决方案2。点击链接后,立即转到新页面。并在新页面打开时,发送 HTTP 请求进行跟踪。
例如:
<a href="http://{pageXURL}">link</a>
// JavaScript code in page X, running when page X is opened.
// send Ajax request to the track URL
请注意,此解决方案不准确。如果用户点击原页面中的链接,但无法打开页面X,或者页面X中的跟踪脚本代码运行失败,则不会跟踪此类事件。
解决方案 3. 点击链接后,立即进入新页面。在服务器端程序中,当新页面 X 被访问时,发送跟踪请求(来自服务器)。
这个方案比方案二好,但是可能会带来更多的复杂性。