2011-06-09 84 views
3

我正在使用addthis,他們有一堆混淆的代碼,我不願意在他們的嵌入式JavaScript中挖掘。我想「點擊」我的頁面上的一個按鈕,而無需用戶觸摸它。是否可以手動調用一個dom對象的點擊?

所以,本質上,有一個<a>包含他們的按鈕(當用戶點擊它們時,它們的嵌入式JavaScript處理)。我想通過自己的javascript「點擊」它們,但是看不到像錨定標記對象相關的本地「clickMe()」函數。

是否有可能做到這一點,或者是否由於安全考慮而丟失規格?

回答

1

所以,這真可謂是,每一個解決方案看起來像一把錘子一個問題,因爲我們研究假設它是釘子的問題。

這樣做的方式(它是100%跨瀏覽器)只是簡單地將頁面重定向到任何添加設置爲鏈接的href。

。換句話說......

self.location.href = document.getElementById("addThisFbLink").href; 

這一切就是這麼簡單。

@ kooilnc,我很感謝你的解決方案,這不是我所需要的,但從某種意義上說,它讓我明白了這一點,非常感謝。

3

我更仔細地查看了AddThis代碼,它們的功能是每個a的父div有一個onclick處理程序。如果您知道要單擊的divid,請將其放在此行中。作爲備份,您還可以嘗試使用click()作爲a

var id = 'atic_facebook'; //for example 
document.getElementById(id).onclick(); 
+0

嗯...我怎麼會錯過這個?! – 2011-06-09 17:06:43

+0

@ Dr.Dredel https://developer.mozilla.org/en/DOM/element.click – js1568 2011-06-09 17:10:12

+0

肯定不會與addthis'a'元素一起工作 – Niklas 2011-06-09 17:12:40

0

可以直接調用一個元素的 「點擊」 功能:

var as = document.getElementsByTagName('a'), i; 
for (i=0; i<as.length; i++) { 
    if (as[i].onclick) { 
    as[i].onclick(); // Run the "onclick" function. 
    } else if (as[i].href) { 
    window.location = as[i].href; // Browse to the URL. 
    } else { 
    // Not much we can do! 
    } 
} 
1

jQuery的觸發():

描述:執行連接到匹配的所有處理程序和 行爲給定事件類型的 元素。

$('a').trigger('click'); 
1

這是一個DOM元素上編程觸發事件的函數:

function eventFire(el, etype){ 
    if (el.fireEvent) { 
    (el.fireEvent('on' + etype)); 
    } else { 
    var evObj = document.createEvent('Events'); 
    evObj.initEvent(etype, true, false); 
    el.dispatchEvent(evObj); 
    } 
} 
// usage 
eventFire(document.getElementById('someHref'),'click'); 
eventFire(document.getElementById('someElement'),'mouseover'); 
// etc.