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



我正在使用addthis,他们有一堆模糊的代码,我讨厌在他们的嵌入式javascript中挖掘这些代码。我想"点击"他们在我的页面上的一个按钮,而用户不必触摸它

因此,本质上,有一个<a>包含他们的按钮(当用户单击按钮时,他们嵌入的javascript会处理该按钮)。我想通过我自己的javascript为他们"点击"它,但没有看到任何类似于与锚标记对象关联的本地"clickMe()"函数的东西。

有可能做到这一点吗?还是出于安全考虑,规范中缺少这一点?

我更仔细地查看了AddThis代码,它们的功能是为每个a的父div提供一个onclick处理程序。如果您知道要单击的divid,只需将其放在这一行中即可。作为备份,您也可以为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,我很感激你的解决方案,这不是我需要的,但在某种程度上,它让我明白了这一点,所以谢谢。

jQuery触发器():

描述:执行所有处理程序和附加到匹配项的行为给定事件类型的元素。

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

最新更新