Javascript DOMSubtreeModified事件(和/或替换)<;a>;标签?

Javascript DOMSubtreeModified事件(和/或替换)<;a>;标签?,javascript,jquery,html,events,dom,Javascript,Jquery,Html,Events,Dom,我注意到DOMSubtreeModified事件被弃用(这是一个不幸的消息),但我想知道是否有一种方法可以检测页面上每个标记的更改(我知道-这可能非常昂贵,但它有它的用途) 基本上,我想知道何时创建/修改标记(节点),以便快速扫描其.href并查看它是否匹配我要查找的模式(如果匹配,我想重定向它以运行我的JS(与此无关),而不是导航到所述链接)。我需要这是通用的(我不知道id/divs/除了它们是s之外的任何东西,它们有一个我正在寻找的特定URL模式) 我知道对它的支持是不完善的,但现在它只能作

我注意到DOMSubtreeModified事件被弃用(这是一个不幸的消息),但我想知道是否有一种方法可以检测页面上每个标记的更改(我知道-这可能非常昂贵,但它有它的用途)

基本上,我想知道何时创建/修改
标记(节点),以便快速扫描其.href并查看它是否匹配我要查找的模式(如果匹配,我想重定向它以运行我的JS(与此无关),而不是导航到所述链接)。我需要这是通用的(我不知道id/divs/除了它们是
s之外的任何东西,它们有一个我正在寻找的特定URL模式)

我知道对它的支持是不完善的,但现在它只能作为一个Chrome扩展使用(Firefox很快就会出现,所以我不得不对它进行修补),所以现在应该可以了


如果还有其他问题,请告诉我。谢谢!

当链接发生时,您可以捕捉到链接操作。您正在寻找的模式是什么?只需在几乎任何情况下“选择”正确的
,“以开始”、“以结束”、“包含”、“等于”等

根据评论:

如果您的页面将被动态更改,您将需要将事件绑定委托给一定会始终存在并包含您的目标的对象

$('body').on('click','a[href="http://notHere.com"]',function(event){
    alert("omg don't go there!");
    //window.location="http://www.goHere.com";
    event.preventDefault();
});

这会将点击处理程序放置在
上,并从那里观察相应锚上的点击。如果你能靠近,就去点击它,例如:
$(“#mainContent”)

当链接动作发生时,你可以捕捉到它。你在寻找什么样的模式?这只是“选择”的问题对于几乎任何场合,右边的
“以开始”、“以结束”、“包含”、“等于”等

根据评论:

如果您的页面将被动态更改,您将需要将事件绑定委托给一定会始终存在并包含您的目标的对象

$('body').on('click','a[href="http://notHere.com"]',function(event){
    alert("omg don't go there!");
    //window.location="http://www.goHere.com";
    event.preventDefault();
});

这会将单击处理程序放置在
上,并从那里监视相应锚上的单击。如果可以靠近,请点击它,例如:
$(“#mainContent”)

当你可以稍后捕捉到点击时,为什么还要听修改?如果这是你感兴趣的行为,那么改变行为,而不是四处搜寻,无所事事。我有点像jQuery noob(多年没有玩过它)…有没有一种方法可以在某个特定标记导航之前捕捉到它的点击?有没有一种方法可以只对那些与我正在寻找的模式相匹配的标记执行此操作?当你可以稍后捕捉到点击时,为什么还要听修改?如果这是你感兴趣的行为,那么就改变该行为,而不是四处搜索并为其工作我有点像jquerynoob(好几年没玩过了)…是否有一种方法可以在特定标记导航之前捕捉到它的点击?是否有一种方法可以仅对那些与我正在寻找的模式匹配的标记执行此操作?所有gCal邀请链接都以类似
http://www.google.com/calendar/event?action=TEMPLATE
后面是描述事件的分隔属性列表。我写了一个little JS脚本登录您的gCal并检查您是否有空/提供将其添加到您的日历中,这样您就不必查看日历上的时间段。这是一个班级项目,托管在一个特定网站上,但我想将其作为一个Chrome扩展,以便它可以在您导航到的任何页面上工作:DI也had计划在它的基础上为不同的日历列出优先级列表,因此如果你的“空闲时间”日历上有一个活动,而新的活动是在你的“工作义务”上日历,您可以将其配置为自动删除旧事件并添加新事件。诸如此类。它非常独立,但我已经尝试将其作为一个扩展工作了一段时间,其中的一部分是能够嗅探任何适当的链接。我在这里发现了一个问题:如果DOM更改,可能会发生什么s(即生成链接)在我的脚本加载后,这不会捕获单击(请参见:)。如果使用该表单遍历并生成HTML,my JS(在加载页面/选项卡时注入)不会捕获事件。如果您更改标签并返回,它将按预期工作。太棒了,谢谢!我现在大部分时间都在使用它,虽然它在Facebook或gMail之类的东西上不太管用,但不知道为什么。扩展加载/运行(我可以显示
alert
s),但侦听器在这些情况下无法捕获链接单击。可能是因为嵌套了大量的
div
s?我所说的链接是由Google Calendar(例如)生成的,就代码而言,这就是我们一直在讨论的…
$('body')。on(“单击“,'a[href^=”https://www.google.com/calendar/event?action=TEMPLATE“]',函数(事件){alert('This will not fire');});
而如果我将
警报
放在
main.js
中,它就会触发。它适用于大多数页面,但如果你要获取链接,将其粘贴到gMail(或Facebook),发送给自己,然后点击它,它就不起作用了:/gCal邀请的所有链接都以类似
http://www.google.com/calendar/event?action=TEMPLATE
后面是描述事件的分隔属性列表。我编写了一个小JS脚本来登录您的gCal,并检查您是否有空/提供将其添加到您的日历中,这样您就不必查看日历上的时间段。这是一个班级项目,托管在一个特定的网站上,但我想让它成为一个Chrome的扩展,这样它就可以在你导航到的任何页面上工作:DI还计划在它的基础上为你的不同日历建立优先级列表,所以如果你在“空闲时间”有一个活动