使用javascript将html写入新窗口

使用javascript将html写入新窗口,javascript,jquery,ajax,new-window,Javascript,Jquery,Ajax,New Window,我一直在研究如何打开一个新窗口,并使用jQuery/JavaScript将HTML写入其中,似乎正确的方法是: 为新窗口创建一个变量 var w = window.open(); 插入新数据并处理变量 $(w.document.body).html(data); 对我来说,这完全有道理。然而,当我试图将其合并到我的脚本(“数据”是HTML的持有者)中时,它不会打开一个新窗口。。。除非我只是错过了一些简单的东西,就我所知它看起来很棒 function newmore(str) { va

我一直在研究如何打开一个新窗口,并使用jQuery/JavaScript将HTML写入其中,似乎正确的方法是:

为新窗口创建一个变量

var w = window.open();
插入新数据并处理变量

$(w.document.body).html(data);
对我来说,这完全有道理。然而,当我试图将其合并到我的脚本(“数据”是HTML的持有者)中时,它不会打开一个新窗口。。。除非我只是错过了一些简单的东西,就我所知它看起来很棒

function newmore(str) {
    var identifier = 4;
    //get the history
    $.post("ajaxQuery.php", {
        identifier : identifier,
        vanid : str
    },
    //ajax query 
    function(data) {
        //response is here
        var w = window.open();
        $(w.document.body).html(data);
    });//end ajax                
}
有什么想法吗

注意:控制台中似乎没有错误

请尝试:

var w = window.open();
w.document.write(data);

document对象的“innerHTML”属性(jQuery的
.html()
使用该属性)表示新窗口没有的html文档。即使是这样,将一个完整的文档放在HTML文档中也没有什么意义。这是一个新创建的文档,因此您可以直接写入它。

您的新窗口可能被大多数浏览器内置的弹出窗口阻止程序阻止。如果创建新窗口是用户操作(键,单击)的直接结果,则浏览器通常不会阻止它。但是,如果您等到稍后某个时间(比如ajax调用完成后),它将被阻塞,这可能就是您的情况

因此,修复方法通常是直接响应用户事件立即创建窗口(不要等到ajax调用完成),将窗口句柄保留在变量中,然后在ajax调用完成后将内容放入窗口中

function newmore(str){
    var identifier = 4;
    // create window immediately so it won't be blocked by popup blocker
    var w = window.open();
    //get the history
    $.post("ajaxQuery.php", {
        identifier : identifier,
        vanid : str
    },
    //ajax query 
    function(data) {
        //response is here
        $(w.document.body).html(data);

    });//end ajax                

}

这种代码的和平将起作用:

var data = "<h1>Test</h1>";
var w = window.open("", "mywindow1", "width=350,height=150");
$(w.document.body).html(data);
var data=“Test”;
var w=window.open(“,“mywindow1”,“宽度=350,高度=150”);
$(w.document.body).html(数据);
打开新窗口时,必须通知一些参数


但是,如果可能的话,我几乎不建议您使用另一种方式,比如jquery UI或Twitter引导,这样您就不会使用弹出窗口。

请不要使用弹出窗口。他们通常是恼人的,即使在请求时打开-考虑内联“Windows”代替。这是为了显示一个公司的历史,相信我,我也不喜欢它,但我又不支付账单。没有什么区别,数据是从我的ajax查询返回的,但没有找到新窗口,我知道一切都正常,因为我让数据在某一点上改变了div的内部html,现在我只是想打开一个新窗口。坦率地说,这种工作方式很愚蠢,但这就是问题所在。你可能会认为我会马上发现这一点:/我会添加这些更改,看起来这会立即修复ti。谢谢:)@Nick-是的,这很痛苦,但对于浏览器来说,也很难弄清楚什么是不需要的广告弹出窗口。错误在于最糟糕的广告服务试图用这些弹出窗口破坏我们的浏览体验,并导致浏览器不得不以这种方式响应。我知道它是从哪里来的,一个人为每个人破坏了它:)我可能可以通过更多的故障排除来解决这个问题,但您提供的代码打开了一个新选项卡,但从未写入数据。有什么想法吗?怎么了?抱歉,我是一个php本地人,我正在与jquery斗争:pI收回这一点,数据正在写入。但它仍然在一个新的选项卡而不是窗口中打开。没什么大不了的though@Nick您将无法控制新窗口是作为选项卡还是窗口打开——这不是Javascript的能力。它由浏览器的设置决定