Javascript 使用jquery创建新窗口

Javascript 使用jquery创建新窗口,javascript,jquery,Javascript,Jquery,我正在用JavaScript/jQuery做一个小项目 为了显示用javascript完成的计算结果,我想打开一个包含一些预定义内容的新窗口,并修改此内容以显示结果:Im使用如下代码: var resultwindow = window.open('result.html') var doc = $('body', resultwindow.document); doc.append("<p>Result</p>") 及 但是ready()仅对当前文档有效(如果当前文档

我正在用JavaScript/jQuery做一个小项目

为了显示用javascript完成的计算结果,我想打开一个包含一些预定义内容的新窗口,并修改此内容以显示结果:Im使用如下代码:

var resultwindow = window.open('result.html')
var doc = $('body', resultwindow.document);
doc.append("<p>Result</p>")

但是
ready()
仅对当前文档有效(如果当前文档已加载,则会立即调用它),并且根本不会调用
load

也许有人能给我指出正确的方向。提前谢谢

编辑

我最终解决了这个问题,用Javascript“手工”创建了新文档,如:

w = window.open('','newwinow','width=800,height=600,menubar=1,status=0,scrollbars=1,resizable=1);
d = w.document.open("text/html","replace");
d.writeln('<html><head>' +
  '<link rel="stylesheet" type="text/css" href="style.cs"/></head>' +
  +'<body></body></html>');
// use d to manipulate DOM of new document and display results
w=window.open(“”,'newwinow','width=800,height=600,菜单栏=1,状态=0,滚动条=1,可调整大小=1);
d=w.document.open(“text/html”、“replace”);
d、 写(“”)+
'' +
+'');
//使用d操作新文档的DOM并显示结果

如果我今天做同样的事情(两年后的经验),我会使用一些Javascript模板库来维护模板并将其编译成javscript。

将数据发送到querystring中的result.html,然后让result.html显示其中的数据。如果你想不那么明显,你可以在查询字符串中对数据进行散列,并让结果页面对其进行去散列。

问题是,它没有做你认为它做的事情

相反,使用
bind(“load”,function(){/*您的函数在这里*/})那么一切都应该正常


更正:


load()
实际上是一个两用函数——如果使用函数作为其第一个参数调用它,那么它会将它绑定到相关对象的加载事件,否则它会将返回的数据(如果有)加载到相关元素中。查看Josh的答案,了解它不起作用的真正原因。

您的
加载调用不起作用,因为您正在尝试处理
文档的加载,而且此时文档可能根本不存在。这意味着您正在将null传递给jQuery,它会很自然地忽略您。处理原始窗口引用的加载事件,然后您就可以开始了

var win = window.open("result.html");
$(win).load(function() {
  $("body").append("<p>Result</p>");
});
var-win=window.open(“result.html”);
$(win).load(函数(){
$(“正文”)。追加(“结果”

”; });
错误。jQuery中的函数足够智能。它根据传入的参数激发。因此,如果您只传入一个函数,它就知道您指的是onload事件。如果您传入AJAX调用所需的所有参数,它就会这样做。@Harv这是错误的。对于OP来说,Load应该可以正常工作,这是有原因的。详细的解释请看我的答案。@Josh--很好,我不知道。谢谢@肖恩,没问题!jQuery有几个函数,它们的行为因参数而异。以
attr
为例。传入一个参数,得到一个属性,传入两个参数,然后设置一个属性!有点疯狂。@Josh——哦,我知道——这让大家都出去很方便。我希望所有的使用都记录在一个地方(或者显著地链接到)——所以当我查看api.jquery.com并只看到
load
下记录的一个使用时,我天真地认为这就是它所做的一切。稍后,我深入研究了源代码,我学到了一些新的东西:-D。再次感谢!软件还应该仅从文件系统脱机工作(即,不使用任何web服务器)。因此,我认为你的建议不是一个选择。无论如何,谢谢。我不知道为什么要构建一个网页或一系列网页,而这些网页实际上并不存在于某种web服务器上。不幸的是,事件处理程序从未被调用。调试器还显示,至少在Chrome中,document对象已经存在,但它是空的(“about:blank”)。Martin,您是否能正常工作?我有一个类似的问题。@Shaunak我将两年前的解决方案作为问题的编辑发布,也提到了我今天将如何解决它。。。嗯。
w = window.open('','newwinow','width=800,height=600,menubar=1,status=0,scrollbars=1,resizable=1);
d = w.document.open("text/html","replace");
d.writeln('<html><head>' +
  '<link rel="stylesheet" type="text/css" href="style.cs"/></head>' +
  +'<body></body></html>');
// use d to manipulate DOM of new document and display results
var win = window.open("result.html");
$(win).load(function() {
  $("body").append("<p>Result</p>");
});