Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
基于浏览器特性动态包含PHP_Php_Javascript_Html_Xhtml_Include - Fatal编程技术网

基于浏览器特性动态包含PHP

基于浏览器特性动态包含PHP,php,javascript,html,xhtml,include,Php,Javascript,Html,Xhtml,Include,重写 我有一个用HTML5编写的网站,同一个网站也是用XHTML编写的。我想根据是否有人使用支持HTML5一些最基本功能的浏览器来呈现一个或另一个 注意 该网站不使用HTML5的画布、音频或视频功能。它只是简单地用旁白、剖面、导航等标记,并使用CSS3的一些有趣的功能来装饰样式。HTML5站点和XHTML站点之间的差异很小,如果我能做到这一点,可能不会引起任何人的注意。内容相同,只是呈现方式略有不同 我这样做的原因 一旦恐龙浏览器消失了,我希望我可以简单地发布HTML5网站,并废除旧的XHTML

重写

我有一个用HTML5编写的网站,同一个网站也是用XHTML编写的。我想根据是否有人使用支持HTML5一些最基本功能的浏览器来呈现一个或另一个

注意

该网站不使用HTML5的画布、音频或视频功能。它只是简单地用旁白、剖面、导航等标记,并使用CSS3的一些有趣的功能来装饰样式。HTML5站点和XHTML站点之间的差异很小,如果我能做到这一点,可能不会引起任何人的注意。内容相同,只是呈现方式略有不同

我这样做的原因

一旦恐龙浏览器消失了,我希望我可以简单地发布HTML5网站,并废除旧的XHTML

我遇到了一些后勤方面的障碍,还没有完全制定出我想如何去做。我最初的想法是使用Javascript条件语句来确定要呈现的PHP。是的,去笑吧,也许有一天我也会。在调查这一点时,有人评论说,XML可能使这成为可能。我相当精通Javascript、PHP和XML。这是我第一次尝试将Javascript与PHP集成,所以现在我明白了为什么我最初的计划需要更多的工作

最终,我强烈地感觉到这就是我想要前进的方向。我读过关于渐进增强和优雅降级的文章,但我决定给我的客户一个漂亮的网站,使用所有新的语义标签和简单的样式选择器来提高SEO,并保证当HTML4消失时,这个新网站将经受住时间的考验…至少在一段时间内

如果你强烈反对这种方法,我愿意听你说什么。请分享你的想法。

不,不,不,不

两点:

  • 使用-提供旧IE浏览器(HTML5功能)
  • -您不应该为不同的浏览器编写代码。您的代码应该可以在所有浏览器中工作。然后添加增强用户体验的功能,但这些功能不是网站正常运行所必需的
  • 不,不,不,不,不

    两点:

  • 使用-提供旧IE浏览器(HTML5功能)
  • -您不应该为不同的浏览器编写代码。您的代码应该可以在所有浏览器中工作。然后添加增强用户体验的功能,但这些功能不是网站正常运行所必需的

  • 你所要求的是不可能的;正如我已经解释过的,PHP是服务器端,JS是客户端;php端完成的任何事情都会在页面交付给用户时完成,因此js不可能影响php端,除非您的站点或内容交付完全在ajax中完成,这是一种使用js和php检索信息的方法;简而言之,js向服务器上的另一个php页面发送请求并返回结果

    然而,这要复杂得多,我不建议您在更熟悉JS和PHP之前使用它

    不过,撇开这一点不谈,php中有一个解决方案,尽管我现在还没有完整的代码

    解决方案是PHP4和PHP5函数:

    以上是在您的答案更新之前;关于上述更新,我没有别的话要说

    更新:关于以下关于ajax的评论之一,我将尝试。。举个例子。我不会试图称之为“简单”,因为ajax绝不是。。尽管回到正题

    HTML:

    PHP:

    
    
    以上只是一个示例,我不建议实际使用它,保存
    retrv_body()
    函数,并将其更改为您真正可以使用的内容


    希望我在代码中的注释有助于理解;如果还有什么问题,请随意提问,让我更透彻地解释。

    你所要求的是不可能的;正如我已经解释过的,PHP是服务器端,JS是客户端;php端完成的任何事情都会在页面交付给用户时完成,因此js不可能影响php端,除非您的站点或内容交付完全在ajax中完成,这是一种使用js和php检索信息的方法;简而言之,js向服务器上的另一个php页面发送请求并返回结果

    然而,这要复杂得多,我不建议您在更熟悉JS和PHP之前使用它

    不过,撇开这一点不谈,php中有一个解决方案,尽管我现在还没有完整的代码

    解决方案是PHP4和PHP5函数:

    以上是在您的答案更新之前;关于上述更新,我没有别的话要说

    更新:关于以下关于ajax的评论之一,我将尝试。。举个例子。我不会试图称之为“简单”,因为ajax绝不是。。尽管回到正题

    HTML:

    PHP:

    
    
    以上只是一个示例,我不建议实际使用它,保存
    retrv_body()
    函数,并将其更改为您真正可以使用的内容


    希望我在代码中的注释有助于理解;如果还有什么问题,请随时询问我的详细解释。

    给定JS不会影响PHP的加载方式,我甚至不认为这是可能的。您可以在JS中插入。和?php-always-loads先于JS加载,JS是客户端。只有在条件语句中调用它,php才会加载。Javascript不会这样工作,php也不会。给定JS不会影响php的加载方式,我甚至不知道这是怎么可能的。您可以在JS中插入。和?php-always-loads在JS之前,JS是客户端的。php在条件语句中调用之前不会加载
    $arr = get_browser(null, true);
    $var = "some browser";
    if ($arr['parent'] == $var) {
       require('/php/file.php');
    }
    else {
       //etc
    }
    
    <html>
        <body>
            <div id="main_body">
            </div>
        </body>
    </html>
    
    //some code to determine user-agent/browser, set variable 'agent' with result
    var use_html5;
    if (agent == browser) {
        use_html5 = 'yes'
    }
    else {
        use_html5 = 'no'
    }
    
    function retrv_body() {
        if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
            xmlhttp=new XMLHttpRequest();
        }
        else {// code for IE6, IE5
            xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
        }
        xmlhttp.onreadystatechange=function() {
            if (xmlhttp.readyState==4) {//readState 4 is when the request has finished;
                //0: request not initialized 
                //1: server connection established
                //2: request received 
                //3: processing request 
                //4: request finished and response is ready
                document.getElementById('main_body').innerHTML = xmlhttp.responseText;
                //set html of div with id 'main_body' to rendering retrieved from php_file_in_same_dir.php
            }
        }
        xmlhttp.open("POST","php_file_in_same_dir.php",true); 
        //set type of form, boolean is in regards to whether the request is asynchronus or synchronous
        //most ajax requests are async, which means they themselves finish executing usually after the function itself has run.  I'm not truly knowledgeable regarding this specific thing since I've only ever used async requests, though I would assume being a sync request would mean the function actually waits until it returns a value before it finishes executing.
        xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
        //set the headers of the content.
        xmlhttp.send("html5=" + use_html5);
        //finally, send the data.  Depending on the data, the data may need to be url-encoded.
    }
    
    retrv_body();
    
    <?php
    if ($_POST['html5'] == 'yes') {
        include('body5.php');
    }
    else {
        include('body_other.php');
    }
    //body generating code, render page.
    ?>