hashPrefix设置为“时,AngularJs抛出url以/#xxx结尾的错误&引用;:未捕获错误:[$location:ihshprfx]

hashPrefix设置为“时,AngularJs抛出url以/#xxx结尾的错误&引用;:未捕获错误:[$location:ihshprfx],angularjs,Angularjs,我们的一些合作伙伴包括我们网站的链接,如 我们的应用程序正在使用作为哈希前缀,因此Angular认为有问题并抛出错误,但这不是错误的URL 未捕获错误:[$location:ihshprfx]无效url”https://www.lapetitetranche.fr/#b4sqF,缺少哈希前缀“#!” 我只想忽略这个参数,只需加载与相同的页面。我该怎么做 谢谢不幸的是,你不能完全做你想做的事 唯一的解决方案是使用角度路由器的html5模式。 在这种情况下,您必须创建服务器路由,该路由将重定向到您的

我们的一些合作伙伴包括我们网站的链接,如

我们的应用程序正在使用
作为哈希前缀,因此Angular认为有问题并抛出错误,但这不是错误的URL

未捕获错误:[$location:ihshprfx]无效url”https://www.lapetitetranche.fr/#b4sqF,缺少哈希前缀“#!”

我只想忽略这个参数,只需加载与相同的页面。我该怎么做


谢谢

不幸的是,你不能完全做你想做的事

唯一的解决方案是使用角度路由器的html5模式。 在这种情况下,您必须创建服务器路由,该路由将重定向到您的主页

否则,如果您不想使用HTML5模式,您可以使用这个小技巧来防止角度行为

var hash = window.location.hash;
if(hash.indexOf('#/')  == 0) {
    window.location.hash = '';
}

编辑:(来自评论)

if(hash.indexOf(“#!”)<0&&
hash.indexOf('#')==0&&
hash.indexOf(‘?#’)<0&&
hash.indexOf(“?”)!=0&&
hash.indexOf(“#state”)<0{
window.location.hash='#!';
}

您可以通过在要使用哈希链接的
标记中使用
target=“\u self”
绕过角度路由过程。Angular会将链接视为外部页面,但页面仍将加载在同一浏览器选项卡中。

Ok,现在处理以下内容:if(hash.indexOf(“#!”)<0&&hash.indexOf(“#”)==0{window.location.hash=“#!”}我之前的评论使我们的facebook oAuth失败,现在处理以下内容:if(hash.indexOf(“#!”)<0&&hash.indexOf('#')==0&&hash.indexOf('?#')<0&&hash.indexOf('?')!=0&&hash.indexOf('#state')<0{链接来自外部网站
if(hash.indexOf('#!') < 0 && 
    hash.indexOf('#') == 0 && 
    hash.indexOf('?#') < 0 && 
    hash.indexOf('?') != 0 && 
    hash.indexOf('#state') < 0 ){

    window.location.hash = '#!'; 
}