Javascript window.open返回未定义的

Javascript window.open返回未定义的,javascript,ruby-on-rails,printing,ruby-on-rails-3.2,Javascript,Ruby On Rails,Printing,Ruby On Rails 3.2,我有一个Rails 3.2站点,正在使用一个javascript打印例程,该例程突然停止工作。这是我的打印例程代码: function print() { var mywin = window.open('', '', ''); mywin.document.write('<body><link href="/assets/application.css" media="all" rel="stylesheet" type="text/css" />

我有一个Rails 3.2站点,正在使用一个javascript打印例程,该例程突然停止工作。这是我的打印例程代码:

function print() {
    var mywin = window.open('', '', '');
    mywin.document.write('<body><link href="/assets/application.css" media="all"    rel="stylesheet" type="text/css" />' + document.getElementsByClassName('fields')[0].innerHTML + '</body>');
    mywin.print();
    mywin.close();
    return false;
}
函数打印(){
var mywin=window.open(“”,“”,“”);
mywin.document.write(“”+document.getElementsByClassName('fields')[0].innerHTML+“”);
mywin.print();
mywin.close();
返回false;
}
这段代码已经运行了好几个月了,但现在每当您试图打印它时,它只打印两个空白页。它在第二行抛出一个错误,无法读取未定义的属性“document”,并且检查显示mywin未定义


谷歌搜索没有产生任何有价值的结果,所以任何人都知道为什么会出现这种情况?

如果浏览器设置阻止创建新窗口,则打开函数将返回未定义的。您唯一的选择是检查truthy值,否则会显示一条消息,表明浏览器设置正在阻止打开窗口

var win = window.open(...);

if (win) {
    win.document.write(...);
} else {
    alert("Your browser prevented the window from opening.");
}

我在非rails环境中也遇到了同样的问题。我正在使用node的http服务器,在localhost上工作

问题是Chrome会自动阻止本地主机的弹出窗口。我转到设置并添加了“localhost”作为例外,现在一切都很好


希望这有帮助

从哪里调用此代码?点击事件?还是通过编程?这在哪个浏览器中发生?来自单击事件:。使用Chrome。你找到解决方案了吗?但它没有被阻止。新选项卡确实会打开并触发打印,只是内容为空,因为它无法访问要写入的新窗口的文档。是否可以使用“#”作为新窗口的url?有时浏览器可以将相对url“”解释为“当前页面”