Подтвердить что ты не робот

JQuery $(document).ready() и document.write()

Во-первых, есть ли способ использовать document.write() внутри метода JQuery $(document).ready()? Если есть, пожалуйста, подскажите мне, потому что это решит мою проблему.

В противном случае у меня есть код, который я должен сделать с моим. Уловка в том, что мне не разрешается каким-либо образом изменять его код. Часть, которая не работает, выглядит примерно так:

document.write('<script src=\"http://myurl.com/page.aspx?id=1\"></script>');

Тег script ссылается на страницу aspx, которая выполняет серию тестов, а затем выплевывает что-то вроде этого:

document.write('<img src=\"/image/1.jpg\" alt=\"Second image for id 1\">')

Сценарии - это всего лишь примеры того, что происходит на самом деле. Проблема здесь в том, что у меня есть document.write() в начальном script и document.write() в script, который добавляется к первому script, и мне нужно как-то сделать эта работа в функции JQuery $(document).ready(), не изменяя его код.

Я понятия не имею, что делать. Помощь?

4b9b3361

Ответ 1

С учетом требований нет, вы не можете использовать document.write, не запустив документ. Если вы действительно намереваетесь не изменять код, вы можете переопределить функциональность document.write() так же, как и на результат позже:

var phbRequirement = "";

$(function() {
  document.write = function(evil) {
    phbRequirement += evil;
  }
  document.write("Haha, you can't change my code!");
  $('body').append(phbRequirement);

});

Убедитесь, что вы перезаписываете функцию document.write до ее использования. Вы можете сделать это в любое время.

Другие ответы скучны, это забавно, но очень многое делает это неправильно, ради удовлетворения требований.

Ответ 2

picardo использует подход, который я бы использовал. Чтобы расширить концепцию, прочитайте:

$('<script/>')
   .attr('src', 'http://myurl.com/page.aspx?id=1')
   .appendTo('body');

Альтернативный стиль:

var imgnode = $('<img alt="Second image for id 1"/>')
   .attr('src', "image1.jpg");

$('#id1').append(imgnode);

Обязательно используйте метод attr для установки любых динамических атрибутов. Нет необходимости избегать специальных символов таким образом.

Кроме того, я не уверен, что эффективность динамического генерации тегов script; Я никогда не пробовал. Хотя ожидается, что они содержат или ссылаются на клиентскую сторону script. Мое предположение заключается в том, что вернет page.aspx. Ваш вопрос немного расплывчатый о том, что вы пытаетесь сделать там.

Ответ 3

jQuery имеет готовую замену document.write. Все, что вам нужно использовать, это метод добавления.

   jQuery('<img src=""/>').appendTo('body');

Это довольно очевидно. Но вкратце, вы можете заменить его любым html, который вы хотите. И имя тега в методе appendTo - это имя тега, к которому вы хотите добавить свой html. Что это.

Ответ 4

picardo отвечает, но это более интуитивно для меня:

$("body").append('<img src=\"/image/1.jpg\" alt=\"Second image for id 1\">');

Кроме того, для части script, которая вставляется с document.write(), проверьте функция jQuery getScript()