首先,有没有办法在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()函数,不改变他的代码。
我不知道该怎么做。帮助
答案 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