Как мне превратить этот JQuery в Javascript? - PullRequest
1 голос
/ 20 июня 2011

У меня есть кнопка подключения к Facebook на этом сайте , здесь код

 <fb:login-button onlogin="javascript:jfbc.login.login_button_click();"
 perms="email,publish_stream,user_about_me,user_hometown,user_location,user_birthday,user_religion_politics,user_interests,user_activities,user_website" 
size="medium" v="2"><a class="fb_button fb_button_medium">
<span class="fb_button_text"\>Login With Facebook</span></a></fb:login-button>

, и я хочу вызвать эту кнопку с помощью вызова javascript и, проводя исследование, нашел этот jquery, которыйКажется, что это бы сработало (еще не проверено), и мне было интересно, если есть эквивалентный javascript или mootool, потому что jquery не установлен.Я могу установить его, если не могу найти решение.Или, если у кого-то есть другая идея, как вызвать эту кнопку на Facebook

$("fb\:login-button").trigger("click");

Ответы [ 6 ]

2 голосов
/ 20 июня 2011

Существует два способа «вызвать» слушателя:

  1. позвоните напрямую (например, element.onclick())
  2. отправляет событие в DOM, на которое слушатель ответит

Проблема с первым методом состоит в том, что он не реплицирует событие пузыря, поэтому слушатель может работать не так, как задумано (например, нет связанного объекта события или пузыря, ключевое слово этого слушателя может не быть правильно настроенным).

Проблема со вторым заключается в том, что некоторые браузеры не позволяют программно отправленным событиям совершать определенные действия (например, переходить по ссылкам). Кроме того, в некоторых браузерах вы должны использовать W3C dispatchEvent и в других Microsoft fireEvent .

Поэтому, если слушатель не был специально разработан для работы с одним или другим методом и не вызывается соответствующим образом, ваши шансы на успешное срабатывание слушателя весьма низки.

PS. Некоторые библиотеки предоставляют свою собственную систему событий, с настраиваемыми событиями и пузырьковыми событиями, не являющимися пузырьками, но в этом случае вы должны установить и запустить прослушиватель, используя эту библиотеку, иначе он, вероятно, не будет реагировать ни на один из вышеуказанных методов. 1026 *

2 голосов
/ 20 июня 2011

Вы должны иметь возможность просто вызывать тот же код, который вызывается в строке:

jfbc.login.login_button_click();
0 голосов
/ 31 мая 2013

Я столкнулся с этим вечером, абсолютно поместил новое изображение кнопки над iframe и планировал использовать события указателя: ни один, чтобы пройти и щелкнуть по iframe, но я искал кросс-браузерное решение, вот выgo.

jQuery('.button_fb_connect').live('click', function(){  FB.login() })

Вы просто запускаете функцию js FB.login () после нажатия на ваш новый элемент, очевидно, вы можете использовать любое событие, которое хотите.

Это, конечно, в jQuery, ноэто та функция, которую вы хотите, а не просто триггер события щелчка.

0 голосов
/ 20 июня 2011

Похоже, вам нужен селектор элементов пространства имен, поэтому вы должны использовать:

document.getElementsByTagNameNS('fb', 'login-button')[0].click();

: - это разделитель пространства имен.

0 голосов
/ 20 июня 2011

Похоже, вы должны уметь:

document.body.getElementsByTagName("fb\:login-button")[0].click();
0 голосов
/ 20 июня 2011

Полагаю, это будет что-то вроде

document.getElementsByTagName("fb\:login-button")[0].click();

Я уверен, что это будет очень хорошо работать с "обычным" элементом DOM, который обрабатывает событие click; однако я не совсем уверен, что он будет работать во всех браузерах с элементом fb: login-button, размещенным в HTML. Вы должны дать мне знать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...