IE에서 작동하지 않는 window.print ()
링크를 클릭하면 내 페이지의 섹션을 인쇄하기 위해 자바 스크립트에서 이와 같은 작업을하고 있습니다.
function printDiv() {
var divToPrint = document.getElementById('printArea');
var newWin = window.open();
newWin.document.write(divToPrint.innerHTML);
newWin.print();
newWin.close();
}
Firefox에서는 잘 작동하지만 IE에서는 작동하지 않습니다.
누군가 도와 주시겠습니까
다음 줄을 추가하십시오. newWin.document.write(divToPrint.innerHTML)
newWin.document.close();
newWin.focus();
newWin.print();
newWin.close();
그러면 인쇄 기능이 모든 브라우저에서 작동합니다 ...
newWin.document.close (); 추가 , 다음과 같이 :
function printDiv() {
var divToPrint = document.getElementById('printArea');
var newWin = window.open();
newWin.document.write(divToPrint.innerHTML);
newWin.document.close();
newWin.print();
newWin.close();
}
이것은 IE를 행복하게합니다. HTH, -Ted
function printDiv() {
var divToPrint = document.getElementById('printArea');
newWin= window.open();
newWin.document.write(divToPrint.innerHTML);
newWin.location.reload();
newWin.focus();
newWin.print();
newWin.close();
}
나는 전에이 문제가 있었고 해결책은 창 인스턴스에서 print를 호출하는 것과는 반대로 IE에서 window.print ()를 호출하는 것입니다.
function printPage(htmlPage)
{
var w = window.open("about:blank");
w.document.write(htmlPage);
if (navigator.appName == 'Microsoft Internet Explorer') window.print();
else w.print();
}
창문을 닫기 전에 잠시 기다리세요!
if (navigator.appName != 'Microsoft Internet Explorer') {
newWin.close();
} else {
window.setTimeout(function() {newWin.close()}, 3000);
}
onload에 대한 검사 조건 추가
if (newWinObj.onload) {
newWinObj.onload = function() {
newWinObj.print();
newWinObj.close();
};
}
else {
newWinObj.print();
newWinObj.close();
}
추가 정보를 추가하기 위해. IE 11에서는
window.open()
원인
window.document
정의되지 않습니다. 이 문제를 해결하려면
window.open( null, '_blank' )
이것은 Chrome, Firefox 및 Safari에서도 올바르게 작동합니다.
나는 논평 할만한 평판이 부족해서 답을 만들어야했다.
<!DOCTYPE html>
<html>
<head id="head">
<meta http-equiv="X-UA-Compatible" content="IE=9; IE=8; IE=7; IE=EDGE" />
<!-- saved from url=(0023)http://www.contoso.com/ -->
<link rel="stylesheet" type="text/css" href="style.css" />
</head>
<body>
<div>
<div>
Do not print
</div>
<div id="printable" style="background-color: pink">
Print this div
</div>
<button onClick="printdiv();">Print Div</button>
</div>
</body>
<script>
function printdiv()
{
var printContents = document.getElementById("printable").innerHTML;
var head = document.getElementById("head").innerHTML;
//var popupWin = window.open('', '_blank');
var popupWin = window.open('print.html', 'blank');
popupWin.document.open();
popupWin.document.write(''+ '<html>'+'<head>'+head+'</head>'+'<body onload="window.print()">' + '<div id="printable">' + printContents + '</div>'+'</body>'+'</html>');
popupWin.document.close();
return false;
};
</script>
</html>
I am not sure but i think it occurs because of the security rules of the InternetExplorer...
If you call a function like print() it asks the user manually if he wants to permit active scripting, if he clicks on the yellow bar and selects 'Yes', the print dialog appears. If you click 'No' or just don't do anything it is not executing the parts which are considered as active scripting or other security relevant javascript functions.
In your example the window is opened then print() is called, confirmation bar pops up (nothing is selected, in fact nothing can be selected due to the short time), newWin.close() is called, window closes.
You should try adding the page to the trusted sites in InternetExplorer or change security settings.
There may be a way of handling the security policies in the javascript itself but i don't know much about InternetExplorer Security Policies.
Hope this helps
The way we typically handle printing is to just open the new window with everything in it that needs to be sent to the printer. Then we have the user actually click on their browsers Print button.
This has always been acceptable in the past, and it sidesteps the security restrictions that Chilln is talking about.
Close the window only when it is not IE:
function printDiv() {
var divToPrint = document.getElementById('printArea');
var newWin= window.open();
newWin.document.write(divToPrint.innerHTML);
newWin.print();
if (navigator.appName != 'Microsoft Internet Explorer') newWin.window.close();
}
I was told to do document.close after document.write, I dont see how or why but this caused my script to wait until I closed the print dialog before it ran my window.close.
var printContent = document.getElementbyId('wrapper').innerHTML;
var disp_setting="toolbar=no,location=no,directories=no,menubar=no, scrollbars=no,width=600, height=825, left=100, top=25"
var printWindow = window.open("","",disp_setting);
printWindow.document.write(printContent);
printWindow.document.close();
printWindow.focus();
printWindow.print();
printWindow.close();
This worked for me, it works in firefox, ie and chrome.
var content = "This is a test Message";
var contentHtml = [
'<div><b>',
'TestReport',
'<button style="float:right; margin-right:10px;"',
'id="printButton" onclick="printDocument()">Print</button></div>',
content
].join('');
var printWindow = window.open();
printWindow.document.write('<!DOCTYPE HTML><html><head<title>Reports</title>',
'<script>function printDocument() {',
'window.focus();',
'window.print();',
'window.close();',
'}',
'</script>');
printWindow.document.write("stylesheet link here");
printWindow.document.write('</head><body>');
printWindow.document.write(contentHtml);
printWindow.document.write('</body>');
printWindow.document.write('</html>');
printWindow.document.close();
For Firefox use
iframewin.print()
for IE use
iframedocument.execCommand('print', false, null);
see also Unable to print an iframe on IE using JavaScript, prints parent page instead
I am also facing this problem.
Problem in IE is newWin.document.write(divToPrint.innerHTML);
when we remove this line print function in IE is working. but again problem still exist about the content of page.
You can open the page using window.open, and write the content in that page. then print function will work in IE.This is alternate solution.
Best luck.
@Pratik
function functionname() {
var divToPrint = document.getElementById('divid');
newWin= window.open();
newWin.document.write(divToPrint.innerHTML);
newWin.location.reload();
newWin.focus();
newWin.print();
newWin.close();
}
참고URL : https://stackoverflow.com/questions/2555697/window-print-not-working-in-ie
'program tip' 카테고리의 다른 글
Laravel-http 상태 코드와 함께 json 반환 (0) | 2020.11.26 |
---|---|
기본 자격 증명을 사용하려면 기본 프록시를 어떻게 설정해야합니까? (0) | 2020.11.26 |
숫자 집합에서 GCD, LCM을 찾는 방법 (0) | 2020.11.26 |
Eclipse는 중단 점에서 멈추지 않습니다. (0) | 2020.11.26 |
OS X의 터미널에서 프로세스를 검사하는 방법은 무엇입니까? (0) | 2020.11.26 |