Эмулируйте тег XMP с тегом скрипта и позволяйте копировать контент - PullRequest
6 голосов
/ 14 марта 2019

Официально <xmp></xmp> устарела (но все еще поддерживается основными браузерами), поэтому, чтобы быть на законной стороне для новых приложений, единственным обходным решением является замена тега xmp (который не анализирует теги HTML), это использованиекак я обнаружил: <script type="text/plain">...</script>.

С этим решением все в порядке, но Firefox ( ONLY ) не позволяет копировать / вставлять содержимое, заключенное в тег <script type="text/plain"></script>.

Попытка исправить это в bugzilla может занять 10-15 лет, как и в случае с аналогичной проблемой Firefox, когда один не может скопировать контент из отключенных элементов text / textarea , поэтому я спрашиваю здесь, может быть, кто-то получиткакой-то обходной путь, позволяющий копировать / вставлять содержимое, заключенное в <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>

PS

Чтобы запретить предложениям использовать <pre> или другие решения, которые модифицировали исходный контент (преобразование в HTML-объекты), я должен сказать, - он не будет работать дляя, я хаиметь оригинальный исходный контент внутри тега <script>.

Ответы [ 2 ]

2 голосов
/ 20 марта 2019

Хорошо, я отвечу на свой вопрос:

Я сообщил Mozilla об этой проблеме как об ошибке , и она была принята и решена довольно быстро (Большое спасибо за это !!!). Описанная проблема исправлена ​​в Firefox, и она будет работать так же, как и во всех других поддерживаемых браузерах, начиная с версии 68, поэтому теперь можно использовать тег <script> вместо тега <xmp>.

0 голосов
/ 18 марта 2019

Текстовое поле будет отображать необработанный 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...