2011-12-19 30 views
0

是否有可能删除不隐藏使用display:none使用Javascript或任何服务器端技术的移动源的HTML的某些部分?是否可以使用Javascript或任何服务器端技术从源代码移除部分HTML?

例如下面假设是内部网站

的页面例如,这是页面桌面浏览器之一<body>的代码。

<header class="hd1"> 

     <hgroup> 
     <h1>A Responsive page</h1> 
     </header> 

    <div class="main"> 

     <section class="hs1"> 

      <header> 
      <h1>This is a Page Sub Title</h1> 
      </header> 

      <p>Some content...</p> 

      <h2>Demonstrating EM and STRONG</h2> 

      <p>This text will have more importance></p> 


     </section><!-- .hs1 --> 

     </div><!-- .main --> 

    <aside class="sidebar"> 
    <p>Sidebar content</p> 
    </aside> 

    <footer class="f1"> 
    <p>copyright &copy; year</p> 
    </footer> 

而且使用同一页面为移动设备我只是想从源中删除<aside>...</aside>

我不能使用不同的页面,因为是基于CMS的。一旦我想在所有设备上显示,就更新内容。但是在移动版本的网站中,我只是想从源代码中删除(隐藏)一些东西。因为如果我只使用display:none移动版将加载相同数量的桌面版本的数据,这不适用于移动设备上的性能。 我们可以使用Javascript或服务器端技术删除移动源的某些特定部分吗?经过一番回应

编辑

由于很多用户评论说JavaScript不能被用来减少有效载荷为移动用户。那么服务器端解决方案可以提供相同的页面,但是在提供它之前从源代码中移除它的一部分呢?

+3

的JavaScript(如果你的意思是客户端)不是这样的一个选项,因为它并不影响什么被发送到设备。本质上是 – pimvdb 2011-12-19 15:19:00

+1

什么你正在寻找'的User-Agent:'嗅,这是不这样做,因为这是很难保持对不断变化的列表的顶部是一件好事。但是,如果你真的* *必须做到这一点,['get_browser()'](http://php.net/manual/en/function.get-browser.php)将是开始的地方。 – DaveRandom 2011-12-19 15:21:46

回答

1

您可以在服务器上detect mobile browser,只是不呈现此标记。

如果你这样做是为了节省带宽,那么使用javascript去除这个没有意义。

+0

如果OP希望减少HTML负载,为什么还要提出隐藏它的客户端大小方法? – cdeszaq 2011-12-19 15:23:24

+0

@Sergei - 我刚刚给出了一个标签的例子,但实际上它可以是任何带有分类或标识的标签和标签。 – 2011-12-19 15:28:29

+0

@JitendraVyas是的,是吗?在这些地方检查移动浏览器,不要渲染这些标签。您可能希望将浏览器检测移到页面呈现过程的开始,而不是每次都复制它。也许你的CMS甚至为你做了这个(并且提供了一些预置标志,比如'$ is_mobile_browser')。 – 2011-12-19 15:30:53

0

当然,这可以做到服务器端。

  • 脚本构建HTML,并根据目标平台只输出:您可以通过两种方式(脚本下面意味着服务器端的脚本,而不是在浏览器)解决这个问题。
  • 该脚本输出HTML和根据目标平台输出的过滤器/后处理更改。

在HTML/XHTML领域的一种技术是XSL变换。你可以用PHP运行这些文件,support for XSL is available in a PHP extension

当然,您也可以使用字符串操作手动执行此操作,或者使用DOMDocumentDOMXpath

要后处理标准输出,可以通过执行output handler/callback来完成。

0

我不确定这是否是您的选择,但有其他解决方案。这不直截了当,但它很有趣:)。

  1. 默认情况下返回页面的“轻量级”版本。
  2. 检测使用JavaScript,如果我们是低带宽连接上。
  3. 如果我们不慢连接如再使用AJAX加载休息。

Modernizr的介绍了检测速度较慢的连接功能测试(见this):

var connection = navigator.connection || { type: 0 }; // polyfill 

return connection.type == 3 // connection.CELL_2G 
    || connection.type == 4 // connection.CELL_3G 
    || /^[23]g$/.test(connection.type); // string value in new spec 

的问题 - 似乎这是不是在目前的浏览器支持的那么好。

使用此连接测试(也许UA嗅探作为备份),你可以加载使用$.load()页面的其余部分之后。

0

很好用asp.net可以设置为在服务器端运行,那么,隐藏或根据设备显示编程股利或任何HTML元素。你可以使用一些设备和能力缺陷框架来决定。

我敢肯定它不会太难用PHP等太

相关问题