2012-03-07 79 views
0

您好我目前使用jQuery根据浏览器宽度加载变量php布局。php根据浏览器宽度加载变量php文件

function setLocation(url) { 
    if (window.location.href.indexOf(url) === -1) 
     window.location = url; 
} 

function reloadPage(width) { 
    width = parseInt(width); 
    if (width < 701) { 
     setLocation("yournarrowpage.php"); 
    } else if (width < 900) { 
     setLocation("yourmediumpage.php"); 
    } else { 
     setLocation("yourwidepage.php"); 
    } 
} 

$(function() { 
    reloadPage($(this).width()); 
    $(window).resize(function() { 
     reloadPage($(this).width()); 
    }); 
}); 

是否有可能使用php来完成这项工作?

如果是,如何?请帮忙。

为什么我想要这样做,当我可以简单地重新安排我的布局与CSS?

我不想使用CSS属性#div { display:none }作为我的布局加载了很多图像,JavaScript和小部件。

我甚至尝试了一个响应式布局,但不幸的是,一些图像细节在小屏幕中几乎看不到。

使用CSS属性display:none,仍会加载未显示的内容,浪费大量带宽。让我们说一个移动浏览器加载1.5 MB的网站,然后隐藏1.2 MB的它?那么这可能不是一个好主意。

对于较小的浏览器,这些小部件将没有任何意义,因此我想加载一个较轻的版本。

这就是我的想法。如果我错了,请随时纠正我,因为在编程方面我仍然是新手,并且仍处于学习阶段。

回答

1

结合CSS媒体查询和JavaScript来防止你不希望加载的体积较大的物品/地区的负荷......

if ($('window').width() > 1000) { 

// load your full functions and stylesheet 

} 

if ($('window').width() < 1000) { 

// load your narrow functions and stylesheet 

} 

我最近在一个类似的方法相结合CSS媒体查询,然后添加动画以帮助减少过渡痛苦。这是相当不错的。

+0

是的,我认为这是有道理的。谢谢您的帮助。 – 2012-03-07 22:01:30

0

PHP只是向客户端输出文本。它完全不了解客户没有告诉它的情况。

我说客户端,因为不能保证发起请求到你的PHP脚本的软件甚至是浏览器。

你已经排除了CSS,但老实说,如果你不想使用JavaScript,那么它是唯一的其他选项。 CSS3中的选择器功能非常强大,您可以使不同浏览器宽度的页面看起来完全不同。

1

在PHP中尝试这个问题的问题是,您无法从Web服务器上知道客户端的宽度,这意味着您将不得不深入到request headers

有一个图书馆来帮助device detection using PHP on Google Code

最后一个字或两个警告。您需要保持脚本处于最新状态才能继续工作。它用来告诉设备是什么的方法属于“浏览器嗅探”的标题,它依赖于浏览器通过某些标题发送,这些标题在较新版本/新浏览器中可能会发生变化。此外,大多数情况下,您只是不希望强迫移动用户查看您的网站的移动版本,因此如果您决定以这种方式实施,可以让用户选择在移动设备上查看正常网站。