解決facebook api登入後url後被加入#_=_

在用omniauth-facebook做使用臉書證號登入會員時,登入後會在網址的後面被加入#_=_
在網頁上好像還沒什麼問題,不過好像會對mobile jquery有影響
不過我單純覺得看起來啊阿雜所以就去stackoverflow找了解法

application.js
$(document).on('page:change', function (e) {
      if (window.location.hash && window.location.hash == '#_=_') {
          window.location.hash = '';
          history.pushState('', document.title, window.location.pathname); // nice and clean

          e.preventDefault(); // no page reload

      }
});

解釋:
這邊用jquery的page:change是因為rails的turbolinks會導致$(doccument).ready不會觸發。
history.pushState是html5的方法,主要是用來更改網址但不會reload頁面。
preventDefault是觸發停止事件。
參考資料:
Facebook Callback appends '#=' to Return URL
jQuery Mobileを利用したページでauth認証後のページが表示されないときの解決法
關於history.pushState
凡走過請留下痕跡:AJAX網頁的狀態與瀏覽記錄
history对象

comments powered by Disqus