Javascript 重新加载janrain小部件

Javascript 重新加载janrain小部件,javascript,jquery,janrain,Javascript,Jquery,Janrain,我在我的网站上安装了Janrain社交登录小部件,并且正在使用AJAX处理身份验证请求 在某些情况下,即使成功登录了社交网站(比如Twitter),我还是想阻止登录我的网站 当这种情况发生时,Janrain小部件被卡住,说“正在加载…”,即使没有更多的事情要做。但是,我希望用户能够尝试通过另一个站点(比如Facebook)再次登录 目前,实现这一点的唯一方法是刷新整个页面。不一定方便,但也不是很大的负担。尽管如此,我还是希望避免这样做 这是我的代码-几乎是Janrain提供的内容的精确副本/粘贴

我在我的网站上安装了Janrain社交登录小部件,并且正在使用AJAX处理身份验证请求

在某些情况下,即使成功登录了社交网站(比如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>
//页面加载时小部件的初始化
(功能(){
if(typeof window.janrain!='object')window.janrain={};
window.janrain.settings={};
janrain.settings.tokenUrl=该URL
janrain.settings.tokenAction='event';
函数isReady(){janrain.ready=true;};
if(文件增补列表器){
document.addEventListener(“DOMContentLoaded”,isReady,false);
}否则{
window.attachEvent(“已加载”,已准备就绪);
}
var e=document.createElement('script');
e、 类型='text/javascript';
e、 id='janrainAuthWidget';
如果(document.location.protocol=='https:'){
e、 src='1〕https://rpxnow.com/js/lib/(域名)/engage.js';
}否则{
e、 src='1〕http://widget-cdn.rpxnow.com/js/lib/(域名)/engage.js';
}
var s=document.getElementsByTagName('script')[0];
s、 parentNode.insertBefore(e,s);
})();
//AJAX身份验证处理程序
函数janrainWidgetOnload(){
janrain.events.onProviderLoginToken.addHandler(函数(令牌响应){
$.ajax({
//(废话废话)
});
});
}
我尝试将初始化函数设置为命名函数,然后在页面加载时显式调用该函数。即使这对小部件的初始化有效,再次调用它也会失败——即使在发出jQuery调用以杀死插入小部件的目标DIV中的所有HTML之后也是如此


想法?谢谢

我认为问题在于您尚未向Janrain注册本地主机url。尝试转到“部署”选项卡下的“应用程序设置”,并将本地url添加到其中。类似于localhost的东西

然后将令牌url更改为登录页。像

janrain.settings.tokenUrl = 'https://localhost:8000/home'
祝你好运