2012-01-14 28 views
2

我已經注意到DOMSubtreeModified事件已被棄用(這是一個令人傷心的消息),但我想知道是否有辦法檢測頁面上每一個標籤的變化(我知道 - 這可能非常昂貴,但它有它的目的)。基本上,我想知道每當一個<a>標記(節點)被創建/修改,所以我可以快速掃描它的.href並查看它是否匹配我正在尋找的模式(如果是,我想重定向它運行我的JS(與此無關)而不是導航到所述鏈接)。我需要這是通用的(我不知道ID/DIV /除了它們是<a href> s,並且它們具有我正在尋找的特定URL模式。)僅限於<a>標記的DOMSubtreeModified事件(和/或替換)?

我知道對此的支持甚至是但現在它只能用作Chrome擴展(Firefox即將推出,所以我不得不去鼓搗它),所以現在應該可以。

讓我知道是否有額外的問題,謝謝!

+1

爲什麼你會聽到修改,當你稍後可以捕獲點擊?如果這是你感興趣的行爲,那麼改變行爲而不是徘徊,不做任何事情。 – Sinetheta 2012-01-14 02:07:17

+0

我是一種jQuery noob(幾年以來沒有玩過它)......有沒有一種方法可以在導航之前捕獲特定標籤上的點擊?有沒有辦法只對那些符合我要找的模式的人做? – 2012-01-14 02:22:00

回答

0

你能趕上鍊接操作,當它發生,而不是什麼是你正在尋找的模式呢?這只是一個「選擇」的權利<a> S的問題。jQuery有屬性selectors˚F或者幾乎任何場合, 「打頭」, 「含有」, 「等於」, 「結尾」,等等

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

jsFiddle

按照評論:

如果您的頁面將被動態更改,您需要將事件綁定委託給一定會始終存在的事物,幷包含您的目標。

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

這給<body>單擊處理程序,並從那裏手錶上的適當錨點擊。如果你可以靠得更近,那麼去吧,例如:$('#mainContent')

+0

所有gCal邀請鏈接都以'http://www.google.com/calendar/event?action = TEMPLATE'開始,後跟描述事件的分隔列表屬性。 我寫了一個小小的JS腳本來登錄到你的gCal,並檢查你是否可以在那段時間/提供將它添加到你的日曆中,這樣你就不必去查看日曆上的時間段。這是一個課程項目,並託管在一個特定的網站上,但我想使它成爲一個Chrome擴展,所以它可以在任何你瀏覽的頁面上工作:D – 2012-01-14 02:52:45

+0

我也有計劃在它上面加上優先級因此,如果您的「空閒時間」日曆上有一個事件,並且新事件位於「工作義務」日曆上,則可以將其配置爲自動刪除舊事件並添加新事件。像這樣的東西。這是非常漂亮的獨立,但我一直試圖讓它作爲一段時間的擴展工作,其中一部分是能夠嗅探任何適當的鏈接 – 2012-01-14 02:55:55

+0

我發現這裏有一個問題:什麼是可能的是,如果我的腳本加載後發生DOM更改(即生成鏈接),但這不會引起點擊(請參閱:[link](http://www.google.com/googlecalendar/event_publisher_guide.html#toc-individual))) 。如果您使用該表單生成HTML,那麼我的JS(在頁面/標籤加載時注入)不會捕獲該事件。如果您更改標籤並返回,它會按預期工作。 – 2012-01-15 01:43:55