我正在使用 addthis,他们有一堆我不愿意在他们的嵌入式 javascript 中挖掘的混淆代码。我想在我的页面上“单击”他们的一个按钮,而无需用户触摸它。
因此,从本质上讲,有一个<a>
包含他们的按钮(当用户单击它时,他们的嵌入式 javascript 会处理该按钮)。我想通过我自己的 javascript 为他们“单击”它,但看不到与锚标记对象关联的本机“clickMe()”函数之类的东西。
是否有可能做到这一点,或者由于安全问题,规范中缺少它?
我正在使用 addthis,他们有一堆我不愿意在他们的嵌入式 javascript 中挖掘的混淆代码。我想在我的页面上“单击”他们的一个按钮,而无需用户触摸它。
因此,从本质上讲,有一个<a>
包含他们的按钮(当用户单击它时,他们的嵌入式 javascript 会处理该按钮)。我想通过我自己的 javascript 为他们“单击”它,但看不到与锚标记对象关联的本机“clickMe()”函数之类的东西。
是否有可能做到这一点,或者由于安全问题,规范中缺少它?
我更仔细地查看了 AddThis 代码,它们的功能onclick
是div
每个a
. 如果您知道要单击的,只需将其放在此行中id
。div
作为备份,您也可以尝试click()
使用a
.
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.
因此,当我们假设它是钉子来检查问题时,结果证明这是一个每个解决方案看起来都像锤子的问题。
执行此操作的方法(它是 100% 跨浏览器)只需将页面重定向到 addthis 设置为链接的 href 的任何内容。
换句话说...
self.location.href = document.getElementById("addThisFbLink").href;
这里的所有都是它的。
@kooilnc,我很欣赏你的解决方案,这不是我需要的,但在某种程度上它让我弄清楚了这一点,所以谢谢。
您可以直接调用元素的“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!
}
}
jQuery 触发器():
描述:执行所有附加到给定事件类型的匹配元素的处理程序和行为。
$('a').trigger('click');