У меня есть виджет социального входа Janrain на моем сайте и обрабатываю запросы аутентификации с помощью AJAX.Перезагрузка виджета janrain
В некоторых ситуациях, хотя есть успешный логин с социальным сайтом (скажем, Twitter), я хочу предотвратить вход на мой сайт.
Когда это произойдет, виджет Janrain застрял, сказав «Загрузка ...», хотя больше нечего делать. Тем не менее, я хотел бы, чтобы пользователь мог попробовать снова войти в систему через другой сайт (скажем, Facebook).
В настоящее время единственный способ сделать это - обновить всю страницу. Не обязательно удобная, но не большая нагрузка. Тем не менее, я бы хотел избежать этого.
Вот мой код - почти точная копия/вставка, что обеспечивает JanRain:
//Initialization of the widget on page load
(function() {
if (typeof window.janrain !== 'object') window.janrain = {};
window.janrain.settings = {};
janrain.settings.tokenUrl = THE_URL
janrain.settings.tokenAction='event';
function isReady() { janrain.ready = true; };
if (document.addEventListener) {
document.addEventListener("DOMContentLoaded", isReady, false);
} else {
window.attachEvent('onload', isReady);
}
var e = document.createElement('script');
e.type = 'text/javascript';
e.id = 'janrainAuthWidget';
if (document.location.protocol === 'https:') {
e.src = 'https://rpxnow.com/js/lib/(domain)/engage.js';
} else {
e.src = 'http://widget-cdn.rpxnow.com/js/lib/(domain)/engage.js';
}
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(e, s);
})();
//Handler for AJAX authentication
function janrainWidgetOnload(){
janrain.events.onProviderLoginToken.addHandler(function(tokenResponse) {
$.ajax({
//(blah blah blah)
});
});
}
<!-- Widget is inserted into this named DIV -->
<div id="janrainEngageEmbed"></div>
Я попытался сделать функцию инициализации именованной функции, которая затем вызывается явно при загрузке страницы. Несмотря на то, что это работает для инициализации виджета, вызов его снова терпит неудачу - даже после вызова jQuery для уничтожения всего HTML внутри целевой DIV, где виджет вставлен.
Идеи? Благодаря!