我正在使用addthis,他们有一堆混淆的代码,我不喜欢在他们的嵌入式JavaScript中挖掘。我想在我的页面上“点击”其中一个按钮而无需用户触摸它。
所以,实质上,有一个<a>
包含它们的按钮(当用户点击它时它们的嵌入式javascript处理)。我想通过我自己的javascript为它们“点击”它,但是看不到任何类似于与锚标记对象相关联的原生“clickMe()”函数。
是否可以执行此操作,或者由于安全问题,是否缺少规范?
答案 0 :(得分:3)
我更仔细地查看了AddThis代码,其功能是onclick
处理程序,用于每个div
的父a
。如果您知道要点击的id
div
,请将其放在此行中。作为备份,您还可以click()
尝试a
。
var id = 'atic_facebook'; //for example
document.getElementById(id).onclick();
答案 1 :(得分:2)
这是一个以编程方式触发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.
答案 2 :(得分:1)
jQuery trigger():
描述:执行所有处理程序和 附加到匹配的行为 给定事件类型的元素。
$('a').trigger('click');
答案 3 :(得分:1)
所以,事实证明这是一个问题,每个解决方案看起来像锤子,因为我们检查问题,假设它是一个钉子。
执行此操作的方式(并且它是100%跨浏览器)只是将页面重定向到链接的href所设置的任何内容。
换句话说......
self.location.href = document.getElementById("addThisFbLink").href;
这就是它的全部内容。
@kooilnc,我感谢你的解决方案,这不是我需要的,但在某种程度上它让我想出了这个,所以谢谢。
答案 4 :(得分:0)
您可以直接调用元素的“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!
}
}