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

时间:2009-04-17 16:30:39

标签: javascript jquery

首先,有没有办法在JQuery的$(document).ready()方法中使用document.write()?如果有,请告诉我,因为这将解决我的问题。

否则,我有一些我应该和我一起工作的代码。问题是,我不允许以任何方式改变他的代码。不起作用的部分看起来像这样:

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

脚本标记引用了一个执行一系列测试的aspx页面,然后吐出类似的内容:

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

脚本只是实际情况的例子。这里的问题是我在初始脚本中有一个document.write(),脚本中有一个document.write(),它被附加到第一个脚本中,我必须以某种方式在JQuery的$中使这个工作(文件).ready()函数,不改变他的代码。

我不知道该怎么做。帮助

4 个答案:

答案 0 :(得分:41)

根据要求,不,您不能在没有真正填写文档的情况下使用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函数。你可以随时做到。

其他答案很无聊,这很有趣,但为了满足要求,我们的做法非常错误。

答案 1 :(得分:6)

皮卡多有我会用过的方法。要扩展这个概念,请阅读:

$('<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方法设置任何动态属性。无需以这种方式逃避特殊符号。

另外,我不确定动态生成脚本标签的效果如何;我从未尝试过。但是,预计它们包含或引用客户端脚本。我的假设是page.aspx会返回。关于你在那里做什么,你的问题有点模糊。

答案 2 :(得分:3)

jQuery可以替代document.write。您需要使用的只是追加方法。

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

这是不言而喻的。但简单地说,你可以用你想要的任何html替换它。 appendTo方法中的标记名称是要将html追加到的标记的名称。就是这样。

答案 3 :(得分:3)

picardo的答案有效,但这对我来说更直观:

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

此外,对于使用document.write()插入的脚本部分,请查看jQuery's getScript() function