4

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

因此,从本质上讲,有一个<a>包含他们的按钮(当用户单击它时,他们的嵌入式 javascript 会处理该按钮)。我想通过我自己的 javascript 为他们“单击”它,但看不到与锚标记对象关联的本机“clickMe()”函数之类的东西。

是否有可能做到这一点,或者由于安全问题,规范中缺少它?

4

5 回答 5

3

我更仔细地查看了 AddThis 代码,它们的功能onclickdiv每个a. 如果您知道要单击的,只需将其放在此行中iddiv作为备份,您也可以尝试click()使用a.

var id = 'atic_facebook'; //for example
document.getElementById(id).onclick();
于 2011-06-09T17:06:03.417 回答
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.
于 2011-06-09T19:24:32.213 回答
1

因此,当我们假设它是钉子来检查问题时,结果证明这是一个每个解决方案看起来都像锤子的问题。

执行此操作的方法(它是 100% 跨浏览器)只需将页面重定向到 addthis 设置为链接的 href 的任何内容。

换句话说...

self.location.href = document.getElementById("addThisFbLink").href;

这里的所有都是它的。

@kooilnc,我很欣赏你的解决方案,这不是我需要的,但在某种程度上它让我弄清楚了这一点,所以谢谢。

于 2011-06-09T19:39:44.307 回答
1

您可以直接调用元素的“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!
  }
}
于 2011-06-09T17:13:42.993 回答
0

jQuery 触发器():

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

$('a').trigger('click');
于 2011-06-09T17:58:20.893 回答