保证在任何 document.location 更改之前执行 Javascript AJAX
Guarantee execution of Javascript AJAX before any document.location change
我想在我的网站上跟踪访问者,考虑许多因素。我通过持续的 Javascript 监控和通过 AJAX 调用将收集的数据实时发送到服务器来进行此跟踪。
我的问题是,在用户单击普通链接或由JS处理的更改document.location的DOM元素后,我的脚本不会记录最后一次单击并发送到我的服务器。
我认为我应该更改每个 DOM 的元素 onClick 事件,首先让我的脚本做他的事情(preventingDefault),然后继续执行原始的 onClick 事件,但这个解决方案似乎不合适并且有点风险(如果在我第一次更改所有事件后创建任何 onClick 事件怎么办,由于显而易见的原因,我无法连续进行扫描和修改)。
最好的方法是什么?
您可以使用
window.onbeforeunload
:
function getTrack(e){
//do your stuff
}
window.onbeforeunload=getTrack;
我认为
根据您尝试跟踪的数据,您应该尝试查看Google Analytics,它会自动跟踪它。
无法确保来自 onbeforeunload 或 onunload 的请求会到达服务器。现代浏览器取消请求。
如果您想确保任何传出域调用都进入您的日志,您基本上需要劫持所有点击并取消操作。您将发送 Ajax 调用,完成后,您将执行页面导航。
可能是
使用jquery的一种方式。
<a class=' location' href=' page.php'> click </a>
<script>
$(document).ready (function (e){
$(".location").click (function(){
e.preventDefaults();
var link = $(this).attr("href");
$.ajax({
type:"GET",
url:"update_visitoi_infoo.php",
data:{v_info:"value"},
success:function(resp) {
document.location.href=link;
}
});
});
});
相关文章:
- 无法在通过jQuery的ajax加载的页面中执行javascript
- 在Safari执行javascript之前对其进行修改
- 如何在执行此特定onclick事件时执行JavaScript函数
- 如何在从浏览缓存加载页面时执行javascript
- 使用Rhino和ASE执行Javascript的区别
- 如何在加载完整页面后严格执行javascript代码
- 在动态加载的对话框中执行Javascript
- 在Sinatra中执行Javascript
- 通过AJAX加载页面并执行javascript和CSS
- 适用于多种浏览器的Selenium-需要能够执行javascript的webDriver
- 如何在seleniumwebdriver中执行javascript提示并等待接受输入
- 在window.open()生成的窗口中执行JavaScript
- AJAX成功回调-执行javascript时出现问题
- 通过指令在控制器中执行javascript函数
- 从React Native Android原生地执行JavaScript代码
- iframe未执行Javascript方法(PHP)
- 执行JavaScript代码,使用selenium webdriver或WatiN从控制台获取日志
- 通过web驱动程序异步执行Javascript
- 如何在长时间执行JavaScript期间显示微调器
- 点击困难时执行javascript函数