2013-05-09 4 views
0

В клиентском событии SignalR (функция javascipt) я использую sammy.setLocation ("# xxx"); но IE10 перешел к длинному URL-адресу, начинающемуся с запроса сигнала SignalR [1]. Но Chrome работает отлично.Неправильное поведение SignalR и Sammy.js в IE

 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 

ответ

2

Это вызвано SignalR вызова вашей функции navigationInPage из внутри iframe кто есть URL, случается http://localhost:30014/signalr/connect?transport=foreverFrame&....

sammy.setLocation("#" + url);, очевидно, использует URL-адрес iframe и как префикс для вашего нового местоположения в IE.

window.location.hash = "#" + url;, похоже, работает везде.

Передача навсегда кадра SignalR is only used in IE, поэтому вы видите эту проблему только в этом браузере.

+0

Какое быстрое и подробное объяснение! – victorwoo