有条件地包括HTML <meta />元素

时间:2011-12-30 03:58:47

标签: html

首先,我做了一些谷歌,发现IE'有条件的评论',并理解它是非标准的。我也觉得没有标准的HTML'IF',所以我的问题是关于我需要做些什么才能达到同样的效果(也许Javascript?)......

我想有条件地包含一个外部.html文件(来自一系列外部.html文件)。具体来说,外部文件每个只包含一行<meta>元素。或者,可以在HTML文件中包含多个内联<meta>元素,并有条件地“选择”一个元素(有效地忽略其他元素)?

基本上,我可以做一些与这些伪代码示例中的任何一个相同的事情吗?

使用外部文件的伪代码示例...

<html>
    <head>
        if some-condition
            <!--#include file="meta1.html" -->
        else
            <!--#include file="meta2.html" -->
        ...
    </head>
     ...
</html>

直接选择替代元素的替代示例(再次伪代码)......

<html>
    <head>
        if some-condition
            <meta name="viewport" content="abc" />
        else
            <meta name="viewport" content="def" />
        ...
    </head>
     ...
</html>

注意:在所有情况下,<meta name属性始终为viewport - 它只是content属性,可能需要更改某些其他属性。

编辑:主要条件是客户类型。一个示例是,为了帮助在Android设备上正确调整网络应用页面的大小,您可以使用只有Android设备可以理解的content的某些viewport数据。对于传统浏览器,我会为content设置一组默认数据(例如,宽度/高度)。这也可以扩展到其他客户端,如谷歌电视,iOS等等。

3 个答案:

答案 0 :(得分:7)

使用Javascript:

document.head.insertAdjacentHTML( 'beforeEnd', '<meta name="viewport" content="abc" />' );

演示:http://jsfiddle.net/ThinkingStiff/ccX5p/

答案 1 :(得分:1)

你可以很容易地用javascript / jQuery做到这一点。

设置条件,然后append()设置为head

示例:

if(//condition here){
    $('head').append('<meta name="viewport" content="abc" />')
}

else{
    $('head').append('<meta name="viewport" content="def" />')
}

答案 2 :(得分:0)

如果你使用的是服务器端,比如asp或java,那么对你来说就容易多了。

我会认为你没有使用服务器端编码。

使用javascript获取浏览器名称(我猜是navigator.appname)。

然后您可以使用DOM在<meta ..../>元素中添加<head>标记。

document.getElementsByTagNam( '头')的appendChild(metaChild);