我正在使用addthis,他們有一堆混淆的代碼,我不願意在他們的嵌入式JavaScript中挖掘。我想「點擊」我的頁面上的一個按鈕,而無需用戶觸摸它。是否可以手動調用一個dom對象的點擊?
所以,本質上,有一個<a>
包含他們的按鈕(當用戶點擊它們時,它們的嵌入式JavaScript處理)。我想通過自己的javascript「點擊」它們,但是看不到像錨定標記對象相關的本地「clickMe()」函數。
是否有可能做到這一點,或者是否由於安全考慮而丟失規格?
我正在使用addthis,他們有一堆混淆的代碼,我不願意在他們的嵌入式JavaScript中挖掘。我想「點擊」我的頁面上的一個按鈕,而無需用戶觸摸它。是否可以手動調用一個dom對象的點擊?
所以,本質上,有一個<a>
包含他們的按鈕(當用戶點擊它們時,它們的嵌入式JavaScript處理)。我想通過自己的javascript「點擊」它們,但是看不到像錨定標記對象相關的本地「clickMe()」函數。
是否有可能做到這一點,或者是否由於安全考慮而丟失規格?
所以,這真可謂是,每一個解決方案看起來像一把錘子一個問題,因爲我們研究假設它是釘子的問題。
這樣做的方式(它是100%跨瀏覽器)只是簡單地將頁面重定向到任何添加設置爲鏈接的href。
。換句話說......
self.location.href = document.getElementById("addThisFbLink").href;
這一切就是這麼簡單。
@ kooilnc,我很感謝你的解決方案,這不是我所需要的,但從某種意義上說,它讓我明白了這一點,非常感謝。
我更仔細地查看了AddThis代碼,它們的功能是每個a
的父div
有一個onclick
處理程序。如果您知道要單擊的div
的id
,請將其放在此行中。作爲備份,您還可以嘗試使用click()
作爲a
。
var id = 'atic_facebook'; //for example
document.getElementById(id).onclick();
可以直接調用一個元素的 「點擊」 功能:
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!
}
}
jQuery的觸發():
描述:執行連接到匹配的所有處理程序和 行爲給定事件類型的 元素。
$('a').trigger('click');
這是一個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.
嗯...我怎麼會錯過這個?! – 2011-06-09 17:06:43
@ Dr.Dredel https://developer.mozilla.org/en/DOM/element.click – js1568 2011-06-09 17:10:12
肯定不會與addthis'a'元素一起工作 – Niklas 2011-06-09 17:12:40