Javascript window.open返回undefined

时间:2014-07-28 18:39:02

标签: 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" />' + document.getElementsByClassName('fields')[0].innerHTML + '</body>');
    mywin.print();
    mywin.close();
    return false;
}

Code已运行好几个月,但现在每当你尝试打印它时,只打印两个空白页。它在第二行抛出错误,无法读取未定义的属性“文档”,并且检查显示mywin未定义。

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

2 个答案:

答案 0 :(得分:5)

如果浏览器设置阻止创建新窗口,window.open函数将返回undefined。您唯一的选择是检查一个真值,否则显示一条消息,说明浏览器设置阻止窗口被打开。

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

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

答案 1 :(得分:3)

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

问题是Chrome自动阻止来自localhost的弹出窗口。我去了设置并添加了“localhost”作为例外,现在一切都很好!

希望这有帮助