Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/470.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 捕获可能重定向/打开新浏览器的所有浏览器事件_Javascript_Dom Events - Fatal编程技术网

Javascript 捕获可能重定向/打开新浏览器的所有浏览器事件

Javascript 捕获可能重定向/打开新浏览器的所有浏览器事件,javascript,dom-events,Javascript,Dom Events,我需要一个页面上的JavaScript,它可以在我单击某个东西时捕获事件,并且该单击可以导致重定向,在新窗口中打开,等等 由于链接有时不能直接打开新窗口,因此它们调用JavaScript函数(window.open,document.location.href)。我是否可以捕获它们并编辑url。您可以使用链接的单击事件来实现这一点。如果您使用的是jQuery,它可能是这样的: $("a").click(function() { /* Open the site in a new wind

我需要一个页面上的JavaScript,它可以在我单击某个东西时捕获事件,并且该单击可以导致重定向,在新窗口中打开,等等


由于链接有时不能直接打开新窗口,因此它们调用JavaScript函数(
window.open
document.location.href
)。我是否可以捕获它们并编辑url。

您可以使用链接的
单击事件来实现这一点。如果您使用的是jQuery,它可能是这样的:

$("a").click(function() {
    /* Open the site in a new window */
    var strNewURL = "http://example.com/redirect.php?id=" + this.href;
    window.open(strNewURL, "myFancyNewWindow");

    /* Stop the browser following the original link */
    return false;
});
这显示了如何在href前面添加一个额外的位,以便通过您自己的重定向脚本将用户发送到那里

如果只想对某些链接执行此操作,则可以优化选择器,例如
$(“#content a”)


另请参见:和。

您可以将onclick处理程序分配给document.body,并使用检测已单击的元素,这基本上是执行事件委派

通过使用事件目标,您可以了解单击元素的所有信息,如其标记名和所有元素属性:

document.body.onclick = function(event){
  if (event.target.tagName == 'A'){ //Handle anchors
    var url = event.target.href;
    // redirect, window.open, or whatever you want...

    event.preventDefault();
  }
}

我重写了这个问题。我觉得我解释得不对。希望这能给我一个很好的理解我到底在寻找什么。谢谢,谢谢。如果有一个javascript函数可以执行一些计算并使用window.open或window.location.href呢。有没有办法捕捉这些东西?你找到了一个捕捉所有东西的好解决方案吗?不仅仅是点击吗?@Domi,没有,但是你可以做另一个解决方案:使用类似backbone.js的观察者模式,为document.location.href、window.open等创建观察者,并实现下面建议的解决方案。你如何观察一个变量?您是指使用
setInterval
进行脏检查吗?我已经用
对象检查并重写了它。defineProperty
不起作用。