Можно ли вручную вызвать клик на объект DOM? - PullRequest
3 голосов
/ 09 июня 2011

Я использую addthis, и у них есть куча запутанного кода, который я не хочу копать во встроенном javascript.Я хотел бы «нажать» одну из их кнопок на моей странице, чтобы пользователю не приходилось к ней прикасаться.

Итак, по сути, есть <a>, который содержит их кнопку (которую обрабатывает встроенный JavaScript, когдапользователь щелкает его).Я хотел бы "щелкнуть" им за них через мой собственный javascript, но не вижу ничего похожего на встроенную функцию "clickMe ()", связанную с объектом тега привязки.

Возможно ли это сделать или отсутствует в спецификации из-за проблем безопасности?

Ответы [ 5 ]

3 голосов
/ 09 июня 2011

Я посмотрел на код AddThis более внимательно, и его функциональность имеет обработчик onclick для родителя div каждого a. Если вы знаете id из div, который хотите щелкнуть, просто поместите его в эту строку. В качестве резервной копии вы также можете попробовать click() для a.

var id = 'atic_facebook'; //for example
document.getElementById(id).onclick();
2 голосов
/ 09 июня 2011

Это функция для программного запуска события в элементе 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.
1 голос
/ 09 июня 2011

Итак, это проблема, когда каждое решение выглядит как молоток, поскольку мы исследуем проблему, предполагая, что это гвоздь.

Способ сделать это (и это 100% кросс-браузер)просто перенаправить страницу на то, что addthis установил в качестве ссылки на ссылку.

Другими словами ...

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

Это все, что нужно.

@kooilnc, я ценю твое решение, это было не то, что мне было нужно, но в некотором смысле это привело меня к выяснению этого, так что спасибо.

1 голос
/ 09 июня 2011

Триггер jQuery ():

Описание: выполнить все обработчики и поведения, привязанные к подобранным элементы для данного типа события.

$('a').trigger('click');
0 голосов
/ 09 июня 2011

Вы можете напрямую вызвать функцию «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!
  }
}
...