javascript - JS : How to track click on links without losing the back button

标签 javascript redirect

我有一个嵌入在随机站点中的 js 小部件。

当用户单击链接时,我想将其报告给我的服务器。

为了调用我的服务器,我使用 src 动态创建一个标签,其中包含报告给服务器的参数。

如果我在 onclick 事件上执行此操作并从 onclick 返回 true,服务器可能不会收到调用,因为浏览器更改了页面(这是正确的吗?)。

如果我在 onclick 上执行此操作并返回 false,然后在返回对服务器的调用后使用重定向,我将失去后退按钮功能,因为 IE 等浏览器不支持重定向后的后退按钮。

知道如何以稳健的方式做到这一点吗?

最佳答案

没问题。如果将 onclick 处理程序添加到 <a>将 AJAX POST 发送到服务器(注册点击)的元素,这将到达服务器,页面仍将移至单击的链接,并且后退按钮将按预期工作。

jQuery 示例:

$('a').live('click', function () {
     $.post('/registerclick/', { data: $(this).attr('src') }, function () {});
});

之所以有效,是因为 HTML 中的客户端/服务器模型指定,当请求发送到服务器时,无法取消。因此以下规则适用:

  1. 事件处理程序关闭,并向服务器发送请求
  2. 默认浏览器行为会将用户重定向到 href 中的页面属性
  3. 即使用户位于完全不同的页面,服务器也会收到请求

浏览器不知道第三步;但这对服务器来说并不重要。

关于javascript - JS : How to track click on links without losing the back button,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7330576/

相关文章:

javascript - 如何根据另一个可观察值的结果创建新的可观察值?

javascript - Fancytree 以编程方式触发加载

codeigniter - 我可以使用 Codeigniter 重定向吗?

使用 307 重定向将所有流量重定向到临时域

c++ - Xcode 应用程序不再从应用程序存储的文件夹中读取输入

javascript - 与 Shopify 一起使用 sharethis API 时不存在 'Access-Control-Allow-Origin' header

javascript - 使用 php 的数据库中的 Jquery Accordion 数据?

http - 为什么 CORS 规范不允许重定向?

ruby-on-rails - 重定向后闪现消息的功能测试

javascript - 价格乘以数量输出jquery