#javascript #events #addthis
#javascript #Мероприятия #добавьте это
Вопрос:
Я использую addthis, и у них есть куча запутанного кода, в котором я не хочу копаться в их встроенном javascript. Я хотел бы «щелкнуть» по одной из их кнопок на моей странице без необходимости пользователя прикасаться к ней.
Итак, по сути, существует <a>
, который содержит их кнопку (которую их встроенный javascript обрабатывает, когда пользователь нажимает на нее). Я хотел бы «щелкнуть» его для них с помощью моего собственного javascript, но не вижу ничего похожего на встроенную функцию «clickMe ()», связанную с объектом тега привязки.
Возможно ли это сделать, или это отсутствует в спецификации из-за соображений безопасности?
Ответ №1:
Я более внимательно просмотрел код AddThis, и их функциональность заключается в том, что у них есть onclick
обработчик для родительского div
элемента каждого a
. Если вы знаете, на id
из div
объектов вы хотите щелкнуть, просто поместите это в эту строку. В качестве резервной копии вы также можете попробовать click()
для a
.
var id = 'atic_facebook'; //for example
document.getElementById(id).onclick();
Комментарии:
1. хм… как, черт возьми, я ЭТО пропустил?!
2. @Niklas Я тестировал это, работает с Firebug:
document.getElementById('atic_facebook').onclick();
но только тогда, когда для него не установлено значениеdisplay:none
3. @js1568 это перенаправляет пользователя на facebook?
4. флажок установлен преждевременно. щелчок не является распознанной функцией в теге A, а onclick() работает в chrome, но не в webkit или safari …. вернемся к чертежной доске 🙂
Ответ №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.
Ответ №3:
Вы можете вызвать функцию «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!
}
}
Ответ №4:
Итак, получается проблема, в которой каждое решение похоже на молоток, поскольку мы исследуем проблему, предполагая, что это гвоздь.
Способ сделать это (и это на 100% кроссбраузерно) — просто перенаправить страницу на то, что addthis установил в качестве href для ссылки.
Другими словами…
self.location.href = document.getElementById("addThisFbLink").href;
Это все, что нужно для этого.
@kooilnc, я ценю ваше решение, это было не то, что мне было нужно, но в некотором смысле это привело меня к выяснению этого, так что спасибо.
Ответ №5:
Триггер jQuery():
Описание: Выполнить все обработчики и поведения, прикрепленные к соответствующим элементам для данного типа события.
$('a').trigger('click');