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

Leo*_*Leo 8 html php noscript

我有一个noscript部分:

<noscript>
  <h1><?php echo $php_title; ?></h1>
  <div><?php echo $php_abstract; ?></div>
</noscript>
Run Code Online (Sandbox Code Playgroud)

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

<h1>Stephen Porges "The Polyvagal Theory"</h1>
Run Code Online (Sandbox Code Playgroud)

我没有用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">
Run Code Online (Sandbox Code Playgroud)

text/html根据浏览器返回文档.

我使用Chrome并且这里可能存在一个错误,但它似乎很奇怪,它在.html中运行正常但不是.php,如果这是原因.

知道这里发生了什么吗?

Ano*_*ous 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>
Run Code Online (Sandbox Code Playgroud)

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

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

  • 有趣的信息,谢谢.但我宁愿远离建议的解决方法,因为它可能会改变其他客户端(fe搜索引擎)对内容的影响,如果`noscript`被替换为不具有相同特殊含义的泛型div .特别是考虑到发生这种错误的情况,我认为它甚至不相关 - 我认为用户很少在已经在网站上时禁用JS,在大多数情况下它已经开启或关闭.少数具有不同习惯的Chrome用户已经习惯了奇怪的效果...... (2认同)