为什么<noscript>中的html标签显示为文本</noscript>

时间:2014-05-28 23:21:36

标签: php html noscript

我有一个noscript部分:

<noscript>
  <h1><?php echo $php_title; ?></h1>
  <div><?php echo $php_abstract; ?></div>
</noscript>

当我在一个.html文件中尝试这个(当然删除了php标签)它按预期工作,但是当在.php文件中时,我在浏览器中得到这个可见的输出(即不被视为html标签):

<h1>Stephen Porges "The Polyvagal Theory"</h1>

我没有用PHP设置任何特殊标题:

<?php
ini_set('display_errors', 1); 
error_reporting(E_ALL);

require_once 'HTTP/Request2.php';

$url = "https://api.zotero.org/groups/56508/items/3B6TR25A?format=atom&content=json";
$r = new HTTP_Request2($url, HTTP_Request2::METHOD_GET);

$r->setConfig(array(
    'ssl_verify_peer'   => FALSE,
    'ssl_verify_host'   => FALSE
));
try {
    $response = $r->send();
    if ($response->getStatus() == 200) {
            $body = $response->getBody();
            $xml = new SimpleXMLElement($body);
            $php_content = $xml->content;
            $php_json = json_decode($php_content);
            $php_title = $php_json->title;
            $php_abstract = $php_json->abstractNote;
    }
} catch (HttpException $ex) {
    echo $ex;
    exit;
}

?>
<!DOCTYPE html>
<html lang="en">

根据浏览器,文档以text/html返回。

我使用的是Chrome,这里可能有一个错误,但看起来奇怪的是它在.html中可以正常工作,但如果这就是原因,则不能.php。

知道这里发生了什么事吗?

1 个答案:

答案 0 :(得分:5)

这是chrome的一个问题,它没有呈现第一次浏览器加载禁用JavaScript的页面。如果在显示纯文本后刷新页面,则应正确呈现该页面。

此问题已经报道:

https://code.google.com/p/chromium/issues/detail?id=235158

该网站的一个人建议使用类似的方法:

<div id="noscript">What was in the noscript-tag ..... </div>
<script type="text/javascript">
     document.getElementById('noscript').style.display="none";
     // rest of script
</script>

因此,只有在启用JavaScript时才会隐藏元素。

我不会说这是一笔大交易。例如,Stack Overflow使用<noscript>标记,无论发生同样的情况。