使用脚本标签模拟XMP标签并允许复制内容

时间:2019-03-14 17:08:56

标签: html css html5 css3 firefox

<xmp></xmp>正式被弃用(但仍受主要浏览器支持),因此对于新应用程序来说,合法的唯一解决方法是替换xmp标签(不解析HTML标签) )就像我发现的那样:<script type="text/plain">...</script>

使用此解决方案一切正常,但是Firefox()阻止复制/粘贴<script type="text/plain"></script>标记中包含的内容。

要求修复bugzilla可能需要10到15年的时间,与类似的Firefox问题一样,当一个can't copy content from disabled text/textarea elements(我在这里问)时,可能有人可以通过某种解决方法来允许复制/粘贴内容<script type="text/plain">...</script>还是可能有更好的xmp标签替换功能,以与当今的浏览器和规则兼容。

下面是示例,我如何使用<script type="text/plain">...</script>

<!doctype html>
<html lang="en">
<head>
  <title>Attempt to emulate depricated XMP tag</title>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">

  <style>
    script[type="text/plain"] {
      display: block;
      width: 100%;
      white-space: pre;
      box-sizing: border-box;
      user-select:text !important;
    }
  </style>
</head>

<body>

<script type="text/plain" readonly>
  Try to select then copy and paste me somewhere else ...
    and you will fail...
      WITH FireFox ONLY !!!

 <p>raw HTML tag "p" here for example</p>
</script>

</body>
</html>

P.S。

为防止要约使用<pre>或其他解决方案来修改原始内容(转换为HTML实体),我应该说-这对我不起作用,我必须在{{1 }}标签。

2 个答案:

答案 0 :(得分:2)

好吧,我会回答我自己的问题:

I reported to mozilla this issue as a bug,它很快就被接受并解决了(非常感谢!!!)。所描述的问题已在Firefox中修复,并且其行为与所有其他从版本68开始的受支持的浏览器的行为相同,因此,现在可以使用<script>标记代替<xmp>标记。

答案 1 :(得分:0)

文本区域将显示原始HTML内容。与脚本解决方案不同,将其设置为只读将允许在Firefox中复制/粘贴内容。

有两个缺点:

  1. 您不能在原始代码中包含</textarea>

  2. 文本区域将需要手动设置其宽度和高度以适合内容。

.rawcode {
    resize: none;
    border: 0;
    outline: 0;
    background-color: #fff;
}
<textarea class="rawcode" readonly>

    Try to select then copy and paste me somewhere else ...
    and you should succeed.

    <p>raw HTML tag "p" here for example</p>

</textarea>