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

Kap*_*ers 21 javascript jquery

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

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

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

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

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

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

我不知道该怎么做.救命?

cgp*_*cgp 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);

});
Run Code Online (Sandbox Code Playgroud)

确保在使用之前覆盖document.write函数.你可以随时做到.

其他的答案很无聊,这很有趣,但为了满足给定的要求,却非常错误地做错了.


spo*_*son 6

picardo有我会用过的方法.要扩展这个概念,请阅读:

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

替代风格:

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

$('#id1').append(imgnode);
Run Code Online (Sandbox Code Playgroud)

请务必使用该attr方法设置任何动态属性.无需像那样逃避特殊符号.

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