Javascript ADAL.JS和离线Web应用程序

Javascript ADAL.JS和离线Web应用程序,javascript,html,azure,adal,Javascript,Html,Azure,Adal,我有一个实现ADAL.JS的网页 当通过网络浏览网页时,它可以完美地工作;然而,当我试图在iPhone上查看它时,我使用添加到主屏幕按钮将它保存为桌面上的快捷方式,事情就变得一团糟了 初始页面(index.html)正确显示使用apple mobile web app-capablemeta标签;然而,当身份验证被调用时,我会被带到一个真正的浏览器窗口。一旦重定向回index.html,我仍然在单独的浏览器窗口中,而不是Web应用程序视图中 最终,我希望将其作为一个离线网站,所有页面功能都在ap

我有一个实现
ADAL.JS
的网页

当通过网络浏览网页时,它可以完美地工作;然而,当我试图在iPhone上查看它时,我使用添加到主屏幕按钮将它保存为桌面上的快捷方式,事情就变得一团糟了

初始页面(
index.html
)正确显示使用
apple mobile web app-capable
meta标签;然而,当身份验证被调用时,我会被带到一个真正的浏览器窗口。一旦重定向回
index.html
,我仍然在单独的浏览器窗口中,而不是Web应用程序视图中

最终,我希望将其作为一个离线网站,所有页面功能都在
apple mobile web app所生成的视图中运行。对于如何实现这一点的任何其他想法,我们表示赞赏


提前谢谢

这是目前iOS webapps中存在的一个大问题。每个链接或重定向都会在新窗口中打开。
您可以通过JavaScript更改
window.location.href
来修复它

似乎遗漏了什么…我发现了一个未定义的错误…建议

alert('Running Auth');
online=navigator.online

authContext = new AuthenticationContext({
    tenant: azureTenant,
    clientId: azureClientId,
    postLogoutRedirectUri: window.location,
    //redirectUri: "https://shlpkpiapi.azurewebsites.net/kpiapp/test.html"
});

authContext.config.displayCall=function(url){ 

    if (urlNavigate) 
    { 
        this.info('Navigate to:' + urlNavigate); 
        window.location.href=urlNavigate; 
    } 
    else
    { 
        this.info('Navigate url is empty'); 
    } 
}



if (authContext.isCallback(window.location.hash)) {

    authContext.handleWindowCallback();
    var err = authContext.getLoginError();
    if (err) {
        alert('Error on callback')
    }
}
else {

    var user = authContext.getCachedUser();
    if (user) {
        //We have a user in cache and are using those credentials
        console.log('Signed in as: ' + user.userName);


    } else {
        console.log('Not signed in.')
        if (online)
        {
            alert('signing in');
            authContext.login();
        }
        else
        {
            alert('currently offline');
        }       
    }
}

好的……我做了更改,错误消失了,但我不明白这应该如何解决这个问题。当我将我的页面添加到IPhone主屏幕()并单击互动程序时,我将进入test.html页面。在该页面上有一个auth函数,它使用adal.js执行,并将我带到“…”。这将显示在我的IOS Web应用程序的范围内,并列出我的帐户和使用其他帐户选项。我点击我的帐户或选择使用另一个帐户选项,我会被带到Safari中打开的另一个页面。

奇怪的是,如果我有一个名为index.html的文件,并对www.google.com执行window.location.href,我仍然在webapp中。但是,当ADAL通过window.location将我重定向到广告登录页面时,ADAL登录页面位于单独的窗口中。当你说用JS更改window.location.href来修复它时..你建议我如何做…更新ADAL JS代码以使用href属性而不是window.location?ADAL.JS提供了一种不更改其本身的方法。我认为只要在脚本中写入以下内容就可以了(用authenticationcontest变量替换%ac):
%ac%.config.displayCall=function(url){if(urlNavigate){this.info('Navigate to:'+urlNavigate);window.location.href=urlNavigate;}else{this.info('Navigate url为空');}
请查看我的其他答案…试图将其与此评论联系起来,但时间太长我的错误:函数的参数应该是
urlNavigate
,而不是
url
。在下面添加了我的回答。我知道我自己的iOS webapp也存在类似问题。你无法控制外国网站,因此目前我无法向你提供更多建议。如果我知道一种方法并能将其应用到我的Web应用程序中,我会让你知道。请告诉我。你使用过Auth0吗?这可能是答案吗?