0

当用户在运行时输入值时,我必须使用 JavaScript 打印一个带有其值的文本框,但下面的代码与 IE9+ 不兼容,文本框在 div 标签内

Print:function()
{
     var divtoprint = document.getElementById('div1');

     var popupWin = window.open('', '_blank', 'width=500,height=400');
     popupWin.document.open();
     popupWin.document.write('<html><body onload="window.print()">' + divtoprint.innerHTML + '</html>');
     popupWin.document.close();
 }

请问你能帮忙吗?

4

3 回答 3

1

我改变了 :

<!DOCTYPE html>
<html>
<head>
<script>
function print(){
     var divtoprint = document.getElementById('main-div').innerHTML;
     alert(divtoprint);
     var popupWin = window.open('', '_blank', 'width=500,height=400');
     popupWin.document.open();
     popupWin.document.write('<html><body onload="window.print()">' + divtoprint + '</html>');
     popupWin.document.close();
 }
</script>
</head>
<body>
 <div>
 <div id="main-div">
    <input type="text" name="FirstName" value="Mickey">
    </div>
    <input type="button" value=" Print Terms " onClick="print()">
</div>

</body>
</html>

它在ie9,ie10中工作f9。

这是我的 ie 10 中的屏幕截图:

在此处输入图像描述

和这个:在此处输入图像描述

于 2013-09-20T09:32:41.227 回答
0

老实说,我真的怀疑这是否可以做到。此外,打印网页的一种常见做法是附加一个用于打印的样式表,其中隐藏了除要打印的元素之外的所有元素。
这是一篇不错的博客文章:
打印样式表

这是一个简单的例子:

<!DOCTYPE html>
<html>
<head>
    <style media="print">
        .noprint { display: none; }
    </style>
</head>
<body">
    <div>
        <div id="main-div">
            <input type="text" id="mytextbox" name="FirstName" value="Mickey"/>
        </div>
        <input type="button" class="noprint" value=" Print Terms " onClick="window.print()">
    </div>
</body>

现在,如果您的用户在浏览器中进入“打印预览”,他们将看不到“打印”按钮(与单击页面上的“打印”按钮时页面的打印方式相同)

我希望这会对你有所帮助。

于 2013-09-20T13:37:57.070 回答
0

IE 对 html 有一些严格的验证。Chrome、firefox 和其他浏览器没有那么严格。

在您的代码中,您缺少结束正文标记。你将需要这个标签,我确信你的代码可以在 IE 中运行。

代替:

popupWin.document.write('<html><body onload="window.print()">' + divtoprint.innerHTML + '</html>');

经过:

popupWin.document.write('<html><body onload="window.print()">' + divtoprint.innerHTML + '</body></html>');

在该行的末尾,我添加了结束标签。

于 2013-09-20T09:37:14.043 回答