是否可以手动调用dom对象上的单击?

时间:2011-06-09 17:04:09

标签: javascript events addthis

我正在使用addthis,他们有一堆混淆的代码,我不喜欢在他们的嵌入式JavaScript中挖掘。我想在我的页面上“点击”其中一个按钮而无需用户触摸它。

所以,实质上,有一个<a>包含它们的按钮(当用户点击它时它们的嵌入式javascript处理)。我想通过我自己的javascript为它们“点击”它,但是看不到任何类似于与锚标记对象相关联的原生“clickMe()”函数。

是否可以执行此操作,或者由于安全问题,是否缺少规范?

5 个答案:

答案 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!
  }
}