SignalR和Sammy.js在IE中的错误行为

时间:2013-05-09 02:57:45

标签: javascript signalr sammy.js

在SignalR的客户端事件(javascipt函数)中,我使用sammy.setLocation("#xxx");但IE10从SignalR后台请求[1]开始导航到一个长URL。 但Chrome工作正常。

        var navigating = $.connection.navigatinghub;
        navigating.client.navigateInPage = function (url) {
            sammy.setLocation("#" + url);
        };

我的目标是

http://localhost:30014/#xxx

但IE10导航到:

http://localhost:30014/signalr/connect?transport=foreverFrame&connectionToken=AQAAANCMnd8BFdERjHoAwE%2FCl%2BsBAAAAtb8ox8I2WUGbubMEpY1ojgAAAAACAAAAAAAQZgAAAAEAACAAAABo9BEScEcfj7EykqEQM76utKY8Gykf0zUEfLdN%2Fj26hgAAAAAOgAAAAAIAACAAAAB0nlIDPLRfOgBH%2FltNOm5jURr0%2F%2Blluc4hnaG2wGQ8DTAAAAAJt7I28p7%2Bq5UeTiQXmnfB%2BbsQCgCqomTQKSXxYRt3LPIMq4gRwcscvuj0mTAXb2tAAAAA8QIiSemy27RcO8IuLr%2Feq5VpMSqEK%2BSX29Xvbm48o4yuNKeppsjFwHfmrMjq6eFwH0sFk4X8bbUkgRMZ3Uyjcw%3D%3D&connectionData=%5B%7B%22name%22%3A%22navigatinghub%22%7D%5D&tid=10&frameId=1#xxx

1 个答案:

答案 0 :(得分:2)

这是由SignalR调用你的navigationInPage函数引起的,iframe的url恰好是http://localhost:30014/signalr/connect?transport=foreverFrame&...

sammy.setLocation("#" + url);显然正在使用iframe的网址,并作为IE中新位置的前缀。

window.location.hash = "#" + url;似乎无处不在。

SignalR的永久帧传输is only used in IE,这就是您在该浏览器中只看到此问题的原因。