форматирование document.open ("text / plain") игнорируется в webkit (safari, chrome) - PullRequest
2 голосов
/ 07 сентября 2011

Я создаю страницу из JavaScript, используя document.open ("text / plain") и document.write ().Текст для визуализации представляет собой несколько строк текста, разделенного табуляцией.В Chrome 13.0.782.220 m и Safari 5.0.5 он представляется как text / html, игнорируя спецификацию кодирования в вызове open ().Говоря, что он выглядит как HTML, я имею в виду, что каждый экземпляр пробела был заменен одним пробелом.В Firefox 3.6, Opera 11.51 и Internet Explorer 8 это отображается правильно.Эти результаты одинаковы для Windows и Mac OS / X.

Я выполнил поиск в стеке с помощью [chrome] + text / plain, [safari] + text / plain и [webkit] + text / plain и увиделнет хитов.Я также искал текст / обычный текст на сайтах отчетов об ошибках Chrome и webkit и не видел подобных отчетов.

Кто-нибудь еще сталкивался с этим или у меня есть какие-либо предложения о том, как заставить мои данные правильно отображатьсяв браузерах на основе webkit?

Простая демонстрационная страница для решения этой проблемы:

<html><head>
<script type="text/javascript">
    function displayInNewWindow() {
        var win;
        var doc;
        win = window.open("", "WINDOWID");
        doc = win.document;
        doc.open("text/plain");
        doc.write("Line1\tField2\tField3\nLine2\tField2\tField3\n");
        doc.close();
    }
</script>
</head>
<body>
    <script type="text/javascript">displayInNewWindow();</script>
    <p>We're here!</p>
</body>

Ответы [ 2 ]

4 голосов
/ 28 августа 2014

Вы должны отбросить параметр в open (), поскольку он не поддерживается в других браузерах, и добавить в качестве первого параметра write () к значению '<PLAINTEXT>', недопустимому тегу из глубины истории HTML, который делает именноВы хотите (у него нет закрывающего тега.)

0 голосов
/ 07 сентября 2011

Вам нужно использовать тег <pre> вокруг вашего контента, чтобы он отображался так, как вы хотите. Браузер все еще будет обрабатывать документ, в который вы пишете код, как документ HTML. Тег <pre> сообщит браузеру, что необходимо отформатировать содержимое предварительно отформатированного текста, который будет учитывать все разрывы строк и символы пробела.

...