我正在使用addthis,他们有一堆模糊的代码,我讨厌在他们的嵌入式javascript中挖掘这些代码。我想"点击"他们在我的页面上的一个按钮,而用户不必触摸它
因此,本质上,有一个<a>
包含他们的按钮(当用户单击按钮时,他们嵌入的javascript会处理该按钮)。我想通过我自己的javascript为他们"点击"它,但没有看到任何类似于与锚标记对象关联的本地"clickMe()"函数的东西。
有可能做到这一点吗?还是出于安全考虑,规范中缺少这一点?
我更仔细地查看了AddThis代码,它们的功能是为每个a
的父div
提供一个onclick
处理程序。如果您知道要单击的div
的id
,只需将其放在这一行中即可。作为备份,您也可以为a
尝试click()
。
var id = 'atic_facebook'; //for example
document.getElementById(id).onclick();
这是一个在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.
您可以直接调用元素的"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!
}
}
因此,这是一个问题,每个解决方案看起来都像锤子,因为我们假设它是钉子来检查问题。
要做到这一点(它是100%跨浏览器的),只需将页面重定向到addthis设置为链接href的任何位置。
换句话说。。。
self.location.href = document.getElementById("addThisFbLink").href;
这就是它的全部。
@kooilnc,我很感激你的解决方案,这不是我需要的,但在某种程度上,它让我明白了这一点,所以谢谢。
描述:执行所有处理程序和附加到匹配项的行为给定事件类型的元素。
$('a').trigger('click');