Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   какой аналог у document.write? (https://javascript.ru/forum/events/28517-kakojj-analog-u-document-write.html)

rori 22.05.2012 21:09

какой аналог у document.write?
 
есть у меня сайт и форум, на форуме есть функция - с помощью скрипта вставит на сайт вывод последних нескольких тем форума на сайт с помощью такого скрипта:

<script>//<!--
var forum='grinata.getbb.ru'; //Имя форума (укажите свой)
var num='5'; //Количество последних тем
var max='100'; // Максимальная длина темы
var ignore='';  // Список форумов, которые не нужно выводить (например закрытые) через запятую, если не нужно оставьте ''
var only=''; //  // Список форумов, которые НУЖНО выводить  и ТОЛЬКО ИХ через запятую, если не нужно оставьте ''
var type='0'; // Если изменить на еденицу, то будут выводится только топики со статусом "Объявление"
var show_first_post='0'; // показывать первое сообщение топика (0=нет,1=да)
var show_replies='0'; // показывать количество ответов (0=нет,1=да)
var attachments='0'; //показывать вложения (0=нет,1=да)
document.write('<script language=JavaScript src=http://'+forum+'/recent.php?set=1&num='+num+'&type='+type+'&max='+max+'&ignore='+ignore+'&only='+only+'&attachments='
+attachments+'&show_replies='+show_replies+'&show_first_post='+show_first_post+'></'+'script>');
--></script>


мне нужно, чтобы данный скрипт выполнялся в последнюю очередь, после загрузки все страницы, я сделал так:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<div id="eee"></div>
<script>//<!--
$(document).ready(function() {
var forum='grinata.getbb.ru'; //Имя форума (укажите свой)
var num='5'; //Количество последних тем
var max='100'; // Максимальная длина темы
var ignore='';  // Список форумов, которые не нужно выводить (например закрытые) через запятую, если не нужно оставьте ''
var only=''; //  // Список форумов, которые НУЖНО выводить  и ТОЛЬКО ИХ через запятую, если не нужно оставьте ''
var type='0'; // Если изменить на еденицу, то будут выводится только топики со статусом "Объявление"
var show_first_post='0'; // показывать первое сообщение топика (0=нет,1=да)
var show_replies='0'; // показывать количество ответов (0=нет,1=да)
var attachments='0'; //показывать вложения (0=нет,1=да)
$('#eee').append('<script language=JavaScript src=http://'+forum+'/recent.php?set=1&num='+num+'&type='+type+'&max='+max+'&ignore='+ignore+'&only='+only+'&attachments='
+attachments+'&show_replies='+show_replies+'&show_first_post='+show_first_post+'></'+'script>');
});
--></script>


и контент с темами не появляется вообще, если вместо
<script language=JavaScript src=http://'+forum+'/recent.php?set=1&num='+num+'&type='+type+'&max='+max+'&ignore='+ignore+'&only='+only+'&attachments='
+attachments+'&show_replies='+show_replies+'&show_first_post='+show_first_post+'></'+'script>

вставить слово любое, то оно выводится как надо - после загрузки страницы.
Вопрос, почему скрипт во втором варианте не выполняется а в первом все ок?
Или как сделать выполнения данного скрипта в последнюю очередь, после загрузки всей страницы?

берет скрипт контент вот осюда (форум на phpbb)
var i=0
<!-- BEGIN topicrow -->
i=i+1
document.writeln(i)
document.writeln('<a href="{topicrow.U_TOPIC}" >{topicrow.TOPIC_TITLE}</a>{topicrow.TOPIC_REPLIES}<br />\n');

   <!-- BEGIN first_post_text -->
   document.writeln('{topicrow.first_post_text.TOPIC_FIRST_POST_TEXT}<br />\n');
      <!-- BEGIN attachment -->
      document.writeln('{topicrow.first_post_text.attachment.DISPLAY_ATTACHMENT}<br />\n');
      <!-- END attachment -->
   document.writeln('<br />\n');
   <!-- END first_post_text -->
document.writeln('</li>');
<!-- END topicrow -->

melky 22.05.2012 21:21

Пожалуйста, отформатируйте свой код!

Для этого его можно заключить в специальные теги: js/css/html и т.п., например:
[js]
... ваш код...
[/js]


О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.

bes 23.05.2012 00:32

Попробуйте на основе этого:

<script>
alert(1);

window.onload = function () {
  var str = '<script>alert(2)</sc' +'ript> ';
  document.write(str);
}

alert(3);
</script>

rori 23.05.2012 00:54

Цитата:

Сообщение от bes (Сообщение 176147)
Попробуйте на основе этого:

<script>
alert(1);

window.onload = function () {
  var str = '<script>alert(2)</sc' +'ript> ';
  document.write(str);
}

alert(3);
</script>

сделал, сначала вылезает аллерт 1, потом 3, а потом вместо моей страницы грузит контент отдельно, потому, что врайт работает только при загрузке страницы, получается, что старницу в данном случае я какбы гружу 2 раза, первый раз моя страница, а второй раз уже только контент. Нужно както заменить врайт, чем-то другим. Вот если, что ссылка http://грината.рф

bes 23.05.2012 10:47

Если я правильно понял, то вам нужно после загрузки документа вставить нужные данные в нужный контейнер.


<div id="myDiv"></div>

<script>
alert(1);

window.onload = function () {
  var a = 'Hello, ';
  var str = a + 'world!';
  myDiv.innerHTML = str;
}

alert(3);
</script>

Раед 23.05.2012 11:30

bes,
со скриптами innerHTML не прокатит

bes 23.05.2012 12:23

Цитата:

Сообщение от Раед
bes,
со скриптами innerHTML не прокатит

Как я понял, здесь не нужно, чтобы сразу выполнился скрипт, здесь требуется просто вывести необходимые данные в виде ссылок на последние темы.

rori 23.05.2012 13:12

Цитата:

Сообщение от bes (Сообщение 176184)
Как я понял, здесь не нужно, чтобы сразу выполнился скрипт, здесь требуется просто вывести необходимые данные в виде ссылок на последние темы.

<div id="myDiv"></div>

<script>
alert(1);
window.onload = function () {
var forum='grinata.getbb.ru'; //Имя форума (укажите свой)
var num='5'; //Количество последних тем
var max='100'; // Максимальная длина темы
var ignore='';  // Список форумов, которые не нужно выводить (например закрытые) через запятую, если не нужно оставьте ''
var only=''; //  // Список форумов, которые НУЖНО выводить  и ТОЛЬКО ИХ через запятую, если не нужно оставьте ''
var type='0'; // Если изменить на еденицу, то будут выводится только топики со статусом "Объявление"
var show_first_post='0'; // показывать первое сообщение топика (0=нет,1=да)
var show_replies='0'; // показывать количество ответов (0=нет,1=да)
var attachments='0'; //показывать вложения (0=нет,1=да)
var a = 'Hello, ';
var str = a + '<script language=JavaScript src=http://'+forum+'/recent.php?&num='+num+'&type='+type+'&max='+max+'&ignore='+ignore+'&only='+only+'&attachments='
+attachments+'&show_replies='+show_replies+'&show_first_post='+show_first_post+'></'+'script>';
myDiv.innerHTML = str;
}
alert(3);
</script>


Но у меня на сайте даже хеллоу не появляется, просто пусто в этом месте, (походу этот скрипт только врайтом вызывается почемуто),
ничего не выводит таким способом((

может, что-то тут надо менять

var i=0
<!-- BEGIN topicrow -->
i=i+1
document.writeln(i)
document.writeln('<a href="{topicrow.U_TOPIC}" >{topicrow.TOPIC_TITLE}</a>{topicrow.TOPIC_REPLIES}<br />\n');
 
   <!-- BEGIN first_post_text -->
   document.writeln('{topicrow.first_post_text.TOPIC_FIRST_POST_TEXT}<br />\n');
      <!-- BEGIN attachment -->
      document.writeln('{topicrow.first_post_text.attachment.DISPLAY_ATTACHMENT}<br />\n');
      <!-- END attachment -->
   document.writeln('<br />\n');
   <!-- END first_post_text -->
document.writeln('</li>');
<!-- END topicrow -->

bes 23.05.2012 13:32

hello-то у вас на сайте выводится (вы случайно не через FF смотрите), имелось ввиду выводить в контейнер не содержимое в тегах <script></script>, а нужное вам содержимое.
Берите ваши переменные и помещайте их в строку, потом эту строку в innerHTML.
Вот пример, когда ссылка на yandex появится после загрузки основного содержимого.
<div>content</div>
<div id="myDiv"></div>

<script>
alert(1);

window.onload = function () {
  var a = '1) ';
  var str = a + '<a href="http://ya.ru" target="blank">yandex</a>';
  myDiv.innerHTML = str;
}

alert(3);
</script>

rori 23.05.2012 13:49

Цитата:

Сообщение от bes (Сообщение 176195)
hello-то у вас на сайте выводится (вы случайно не через FF смотрите), имелось ввиду выводить в контейнер не содержимое в тегах <script></script>, а нужное вам содержимое.
Берите ваши переменные и помещайте их в строку, потом эту строку в innerHTML.
Вот пример, когда ссылка на yandex появится после загрузки основного содержимого.
<div>content</div>
<div id="myDiv"></div>

<script>
alert(1);

window.onload = function () {
  var a = '1) ';
  var str = a + '<a href="http://ya.ru" target="blank">yandex</a>';
  myDiv.innerHTML = str;
}

alert(3);
</script>

да через фаерфокс
не совсем понял, что вы имели ввиду, про содержимое, я не силен в этом, покажите как нужно поместить именно мое содержимое?


Часовой пояс GMT +3, время: 12:15.