【问题标题】:Why are the html-tags inside <noscript> shown as text为什么 <noscript> 中的 html-tags 显示为文本
【发布时间】:2014-05-28 23:21:36
【问题描述】:

我有一个无脚本部分:

<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

知道这里发生了什么吗?

【问题讨论】:

  • 需要更多输入。显示输出 noscript 的 PHP 脚本。
  • 为我工作 &lt;?php $php_title = "TITLE HERE"; $php_abstract = "ABSTRACT"; ?&gt; &lt;noscript&gt; &lt;h1&gt;&lt;?php echo $php_title; ?&gt;&lt;/h1&gt; &lt;div&gt;&lt;?php echo $php_abstract; ?&gt;&lt;/div&gt; &lt;/noscript&gt; --- HTML 源代码 &lt;noscript&gt; &lt;h1&gt;TITLE HERE&lt;/h1&gt; &lt;div&gt;ABSTRACT&lt;/div&gt; &lt;/noscript&gt;
  • 您确定 PHP 正在运行和/或您的代码类似于我上面发布的内容吗?有点愚蠢的问题,但我不得不问。
  • 确保也使用 htmlentities htmlentities($php_title);
  • 不客气。我上面的评论是在关闭 JS 的情况下完成的。

标签: php html noscript


【解决方案1】:

这是 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 无论如何都会使用&lt;noscript&gt; 标签,同样的情况也会发生。

【讨论】:

  • 有趣的信息,谢谢。但我宁愿远离建议的解决方法,因为如果 noscript 被替换为不具有相同特殊含义的通用 div,它也可能会改变其他客户(fe 搜索引擎)对内容的处理方式.尤其是考虑到这个错误发生的情况,我认为它甚至没有那么相关——我假设用户很少在已经在网站上时禁用 JS,在大多数情况下它已经打开或关闭。少数习惯不同的 Chrome 用户应该已经习惯了奇怪的效果……
  • @CBroe 我完全同意。我只是将其作为一种可能的替代方案展示,以防他们发现这很重要。
  • 感谢 Anonymous,是的,这是一个缓存错误,但对重新加载页面没有帮助(C-F5 也不行)。我注意到它仍然运行了一些javascript,即使它被禁用了。不确定 Chrome 在那里做了什么,但网络面板在第一行的启动器列中说了一些关于 JavaScript 的内容。很奇怪(错误通常很奇怪;-))
  • 如果它真的运行了一些 JavaScript,那确实很奇怪。除非有一些巨大的错误,否则这并没有多大意义。
  • 当我关闭 javascript 并使用 C-F5 重新加载时,显示不正确。第二个 C-F5 修复它。 (所以这似乎与您所说的一致。也许不涉及缓存?这取决于Chrome开发人员检查。;-))
猜你喜欢
  • 2019-03-14
  • 1970-01-01
  • 2021-12-15
  • 2023-03-22
  • 2010-10-24
  • 2020-08-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多