63

オンロードで印刷プレビュー ページを起動するページがあります。

私はこれを見つけました:

var OLECMDID = 7;
/* OLECMDID values:
* 6 - print
* 7 - print preview
* 1 - open window
* 4 - Save As
*/
var PROMPT = 1; // 2 DONTPROMPTUSER
var WebBrowser = '<OBJECT ID="WebBrowser1" WIDTH=0 HEIGHT=0 CLASSID="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2"></OBJECT>';
document.body.insertAdjacentHTML('beforeEnd', WebBrowser);
WebBrowser1.ExecWB(OLECMDID, PROMPT);
WebBrowser1.outerHTML = "";

しかし...

  1. FireFox では機能しません。
  2. それはちょっと醜いです。

IE または FireFox で動作するより良い方法はありますか?

4

3 に答える 3

35

できません。印刷プレビューはブラウザーの機能であるため、セキュリティ リスクになるため、JavaScript によって呼び出されないように保護する必要があります。

そのため、この例では、JavaScript のセキュリティの問題を回避する Active X を使用しています。

代わりに、既にあるはずの印刷スタイルシートを使用して、media=print の代わりに media=screen,print に対して表示します。

印刷用スタイルシートに関する優れた記事については、Alist Apart: Going to Print を参照してください

于 2008-10-23T15:38:38.707 に答える
29

クロスブラウザー JavaScript で可能な最善の方法はwindow.print()、(私にとっては Firefox 3 で) 印刷プレビュー ダイアログではなく「印刷」ダイアログを表示することだと思います。

参考までに、印刷ダイアログは、コンピューターの印刷ポップアップであり、Ctrl-p を実行したときに表示されます。印刷プレビューは Firefox 独自のプレビュー ウィンドウであり、より多くのオプションがあります。これは、Firefox メニュー > 印刷... で得られるものです。

于 2008-10-23T15:40:27.580 に答える
5

それはjavascriptを使用して行うことができます。あなたのhtml/aspxコードがこのようになるとしましょう:

<span>Main heading</span>
<asp:Label ID="lbl1" runat="server" Text="Contents"></asp:Label>
<asp:Label Text="Contractor Name" ID="lblCont" runat="server"></asp:Label>
<div id="forPrintPreview">
  <asp:Label Text="Company Name" runat="server"></asp:Label>
  <asp:GridView runat="server">

      //GridView Content goes here

  </asp:GridView
</div>

<input type="button" onclick="PrintPreview();" value="Print Preview" />

ここで [印刷プレビュー] ボタンをクリックすると、印刷用のデータを含むウィンドウが開きます。「forPrintPreview」が div の ID であることを確認します。印刷プレビューの機能は次のようになります。

function PrintPreview() {
 var Contractor= $('span[id*="lblCont"]').html();
 printWindow = window.open("", "", "location=1,status=1,scrollbars=1,width=650,height=600");
 printWindow.document.write('<html><head>');
 printWindow.document.write('<style type="text/css">@media print{.no-print, .no-print *{display: none !important;}</style>');
 printWindow.document.write('</head><body>');
 printWindow.document.write('<div style="width:100%;text-align:right">');

  //Print and cancel button
 printWindow.document.write('<input type="button" id="btnPrint" value="Print" class="no-print" style="width:100px" onclick="window.print()" />');
 printWindow.document.write('<input type="button" id="btnCancel" value="Cancel" class="no-print"  style="width:100px" onclick="window.close()" />');

 printWindow.document.write('</div>');

 //You can include any data this way.
 printWindow.document.write('<table><tr><td>Contractor name:'+ Contractor +'</td></tr>you can include any info here</table');

 printWindow.document.write(document.getElementById('forPrintPreview').innerHTML);
 //here 'forPrintPreview' is the id of the 'div' in current page(aspx).
 printWindow.document.write('</body></html>');
 printWindow.document.close();
 printWindow.focus();
}

「印刷」ボタンと「キャンセル」ボタンの css クラスが「印刷なし」であることを確認してください。したがって、これらのボタンは印刷物に表示されません。

于 2014-05-21T05:19:25.010 に答える