在站点上使用目标_blank甚至在桌面上强制移动重定向

时间:2014-10-21 18:12:41

标签: javascript django angularjs redirect mobile

我有两个网站,一个用于移动设备,另一个用于桌面设备。这两个网站都是使用角度构建的django应用程序。桌面网站似乎有一个错误,其中生成的任何链接应该通过移动重定向并继续到桌面,但是,他们没有传递此信息,只有在链接上使用target="_blank"时它才会重定向。

controllers.js中,我有以下内容:

$(document).ready(function(){
  //showA();
  mobileRedirect();
  if($route.current.params.aId){
    a.set($route.current.params.aId,$route.current.params.bId);
  };
  tryCookieLogin();
});

现在移动重定向基于:

function mobileRedirect() {
    var viewport = getWindowSize();
     console.log('viewport: '+viewport.width)
    if (viewport.width<650){
      //console.log('switch to mobile')
      if(isA()){
        var urlA = 'http://example.com/mobile/#/a/'+$route.current.params.aId+'/b/'+$route.current.params.bId;
      }else{
        var urlA = 'http://example.com/mobile/';
      }
      window.location.href = urlA;
    }
}

和getWindowSize:

function getWindowSize() {
    var w = window,
        d = document,
        e = d.documentElement,
        g = d.getElementsByTagName('body')[0],
        x = w.innerWidth || e.clientWidth || g.clientWidth,
        y = w.innerHeight || e.clientHeight || g.clientHeight;

        $scope.windowWidth

    return { width: x, height: y };
}

那么为什么如果我创建一个使用target="_blank"的链接,无论屏幕大小如何,它都会重定向到移动设备?不使用target的链接可以正常工作吗?

1 个答案:

答案 0 :(得分:0)

getWindowSize()函数返回窗口的宽度和高度(而不是设备屏幕的宽度)。

因此,如果在桌面上使用target =“_ blank”创建一个新窗口并且宽度小于650px,则会受到移动重定向的影响。