Jump to content
  • 0

Особенности метода document.write()


Sserg-135
 Share

Question

Добрый день форумчане!

Обнаружил такой подводный камень при создании нового документа данным методом:

(заранее извиняюсь за сумбурность изложения)

(пример для простоты взят из книги Стефана Коха)

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<script language="JavaScript">
<!-- hide

function openWin3() {
myWin= open("", "displayWindow",
"width=500,height=400,status=yes,toolbar=yes,menubar=yes");

// открыть объект document для последующей печати
myWin.document.open();

/// генерировать новый документ
myWin.document.writeln("<html><head><title>On-the-fly");
myWin.document.writeln("</title></head><body>");
myWin.document.writeln("<center><font size=+3>");
myWin.document.writeln("ываыфваывпкуупу ");
myWin.document.writeln("with the help of JavaScript!");
myWin.document.writeln("</font></center>");
myWin.document.writeln("</body></html>");

// закрыть документ - (но не окно!)
myWin.document.close();
}

// -->
</script>
</head>
<body>

<form>
<input type=button value="On-the-fly" onClick="openWin3()">
</form>

</body>
</html>

Все на первый взгяд элементарно, окошко открывается, документик создается. Однако при попытке сменить кодировку или посмотреть ее ,нажав правую кнопку, вновь созданного документа IE отображает текущую кодировку недоступным цветом и не меняет ее на другую.

Сохраняется (через меню) этот вновь созданный документ тоже в Юникоде. Если сделать просотр HTML кода через Блокнот и сохранение кода через него кодировка полученного файла ANSI.

Итак к чему я все это написал. Проблема собственно такая. Создаю динамически документ так как описанно выше. Пытаюсь подключить к нему внешний CSS файл (в новом создаваемом документе - т.е. пишу myWin.document.writeln("

");Стили подключаются (шрифты, размеры для BODY ), но только для НЕ ДЛЯ селекторов классов ( конкретно

Но сохранив код сгенерированного файла через Блокнот ( кодировка опять-таки! )и открыв его затем IE все стили и селекторы отлично работают. Если сохраняю его через мени эксплорера

то тоже селекторы не работают.

Вот. Собственно про кодировку в начале вопроса поэтому я и написал, потому что я другой причины не нашел. Сталкивался кто с подобным?

Link to comment
Share on other sites

13 answers to this question

Recommended Posts

  • 0
ну если с кодировкой проблемы,то попробуйте в новом документе ее хотябы задавать там meta и все такое.

в самом документе шрифты отображаются корректно, и <меты> со строкой 1251 имеются

я просто создаю документ явой и проблема в том что не распознаются контекстный селекторы (именно на созданном "на лету "документе) CSS, а после сохранения его Блокнотом все работает. Внешне оба кода абсолютно одинаковы . Поэтому пока что приходит на ум это проблема с кодировкой сгенерированного документа

Link to comment
Share on other sites

  • 0

Почему был выбран именно такой способ? Что в н?м есть такого, чего нет в открытии уже существующего документа?..

p.s. При сохранении обычной статической странички (через меню браузера), обычно так же сохраняются некоторые рисунки, js-скрипты и т.д. связанные с нею.

Динамически созданный контент (с помощью js в вашем случае) как правило не сохраняется с помощью File | Save (А у вас css подключается лишь после создания соответствующей тега ява-скриптом). Следовательно? CSS файл никуда не сохраняется. Никакие стили к сохран?нному документу не применяются.

Link to comment
Share on other sites

  • 0

2Sserg-135, нет необходимости в том, что вы делаете. Выводимую информацию о конкретном продукте в новом окне лучше доставать делая соответствующий запрос к базе. Он же всего 1 - это мгновенно, никакой существенной нагрузки на базу нет.

Link to comment
Share on other sites

  • 0
2Sserg-135, нет необходимости в том, что вы делаете. Выводимую информацию о конкретном продукте в новом окне лучше доставать делая соответствующий запрос к базе. Он же всего 1 - это мгновенно, никакой существенной нагрузки на базу нет.

Видимо так и есть, просто теперь уже просто интересно разобраться в чем тут "собака порылась" :(

Мало-ли когда придется сделать подобное окошко и без PHP

Link to comment
Share on other sites

  • 0
Пример устарел, вот и не работает должным образом.

Влад обьясните подробнее пожалуйсто что конкретно устарело?

Вчера взял книжку "Java Script и DHTML Сборник рецептов " автор Д.Гудман издание 2004 г.

Там в качестве примера динамически создаваемого документа испльзован точно такой же способ и точно также подключаютя селекторы CSS (стр 474) (и не только ), кстати тоже безуспешно :(

Правда там же нашел альтернативу - создание таблицы как ява объекта (что-то типа tr=tbody.insertRow ... td=tr/insertCell.. и т.д. и.т.п )

Похоже тогда что в реальном сайтостроении явой странички не делают??

Link to comment
Share on other sites

  • 0

Да... когдато генерил странички подобным образом через такой изврат. Попробуй так:

window.content = '';

function newWin( html )
{
window.content = html;

myWin= open("", "displayWindow",
"width=500,height=400,status=yes,toolbar=yes,menubar=yes");

// открыть объект document для последующей печати
myWin.document.open();

/// генерировать новый документ
myWin.document.writeln("<html><head><title>On-the-fly");
myWin.document.writeln("</title></head><body>");
myWin.document.writeln("<sc"+"ript type='text/javascript'>document.write(parent.content);</sc'+'ript>");
myWin.document.writeln("</body></html>");

// закрыть документ - (но не окно!)
myWin.document.close();
}

newWin('<table class="hellow"></table>');

Может данный изврат поможет вам)))

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy