ASP.NET(VB) + JavaScriptでWebページの印刷プレビューを表示する方法

このQ&Aのポイント
  • ASP.NET(VB) + JavaScriptを使用してWebページの印刷プレビューを表示する方法について説明します。
  • JavaScriptのコードを組み込んで実行する際にエラーが発生した場合、参照設定が必要になることがあります。
  • 初めての開発で基礎的な知識がない場合は、他の方法を検討することもできます。
回答を見る
  • ベストアンサー

ASP.NET(VB) + JavaScriptで印刷プレビュー

ASP.NET(VB) + JavaScriptで印刷プレビュー お世話になります。 下記のソースを参考に、Webページ(.aspx)の印刷プレビューを表示したいと思っております。 ---------------------------------------------------------------------- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head> <title>印刷プレビュー</title> <script> function PrintPreview() { if(window.ActiveXObject == null || document.body.insertAdjacentHTML == null) return; var sWebBrowserCode = '<object width="0" height="0" classid="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2"></object>'; document.body.insertAdjacentHTML('beforeEnd', sWebBrowserCode); var objWebBrowser = document.body.lastChild; if(objWebBrowser == null) return; objWebBrowser.ExecWB(7, 1); document.body.removeChild(objWebBrowser); } </script> </head> <body> <form name="form"> <input type="button" value="PrintPreview" onclick="PrintPreview();"> </form> </body> </html> ---------------------------------------------------------------------- このJavaScriptを組み込んで実行すると、objWebBrowser.ExecWB(7, 1);のところで エラーとなってしまいます。 ExecWBを使うためには参照設定が必要なのでしょうか? 初めての開発で、基礎的なことがわかっておらず、大変戸惑っております。 また、他に方法がありましたら教えていただきたいです。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

参照設定とは全く無縁です。 ActiveXを利用したJavaScriptですので、権限の問題です。 aspxであろうと、htmであろうと、そのページを閲覧するブラウザのセキュリティ設定に依存します。 おそらくIE6だと標準で動きます。 IE7は不明です。 IE8はセキュリティを下げないと動かないかもしれません。 http://okwave.jp/qa/q6104792.html でも答えたのですが、同様の事例です。 質問者さんはサーバサイドの意味を理解する必要があります。 参照設定の問題は、WEBプロジェクトの場合、コンパイルが通らないときに考えられる要素です。 Javascriptに参照設定は関係ありません。 一応下はaspxでの作成例です。 ビハインドコードを利用していません。 <%@ Page Language="VB" Inherits="System.Web.UI.Page" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>無題のページ</title> <script type="text/javascript"> function PrintPreview() { if(window.ActiveXObject == null || document.body.insertAdjacentHTML == null) return; var sWebBrowserCode = '<object width="0" height="0" classid="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2"></object>'; document.body.insertAdjacentHTML('beforeEnd', sWebBrowserCode); var objWebBrowser = document.body.lastChild; if(objWebBrowser == null) return; objWebBrowser.ExecWB(7, 1); document.body.removeChild(objWebBrowser); } </script> </head> <body> <form id="form1" runat="server"> <input type="button" value="PrintPreview" onclick="PrintPreview();" /> </form> </body> </html>

tera333
質問者

お礼

ご指摘の通り、ブラウザのセキュリティ設定にて解決しました。 冷静になって考えればすぐにわかりそうなものなのに、何日も悩んでしまいました。 本当にお恥ずかしい限りです。 丁寧に教えてくださり、ありがとうございました。

その他の回答 (1)

回答No.1

ExecWB引数 http://docs.codegear.com/products/rad_studio/radstudio2007/RS2007_helpupdates/HUpdate4/JA/html/delphivclwin32/_!!CONSTANTS_SHDocVw_14_Constants.html いっぱいあります。 探しづらいですよね^^; そこで http://fusigidane.seesaa.net/article/136751944.html のページ中を OLECMDID_PRINTPREVIEW で検索 ExecWB に関する引数の説明をしてくれています。 質問者さんは、おそらく http://okwave.jp/qa/q1906268.html を見て作成されているのでしょうが、私の環境では動きます。 objWebBrowser.ExecWB(7, 1); という引数の値を疑ったのかもしれませんが、それでよいです。 OLECMDID_PRINTPREVIEW = 7 OLECMDEXECOPT_PROMPTUSER = 1 考えられるのは、、、 ・プリンタが一つも設定されていないPCから起動している ・IE以外で動作確認を行っている。(IE以外で動作が保障はされません) というところでしょうか。。。

tera333
質問者

補足

回答ありがとうございます。 説明が足りなくて申し訳ありません。 ブラウザはIE8を使っています。 サンプルソースをテキストに貼り付けて実行した場合は問題なく動くのですが、 aspxに記述した場合、「オブジェクトでサポートされていないプロパティまたはメソッドです。」 というエラーがでてしまうため、参照設定等が足りないのかと思った次第です。

関連するQ&A

  • javascriptで困っています。教えてください

    JavaScriptで配列をPOST送信しようとしています。 <form>や<input>を作っておいてではなく、javascriptで生成する関数からしたいと思っています。以下のコードでうまくいきません。 教えていただければありがたいです。よろしくお願いします。 <!DOCTYPE html> <html> <head> <script type="text/javascript"> var ar = new Array(5); ar[0] = 111; ar[1] = 222; ar[2] = 333; ar[3] = 444; ar[4] = 555; function sampleForm(value){ var form = document.createElement('form'); document.body.appendChild( form ); var input = document.createElement('input'); input.setAttribute('type','hidden'); input.setAttribute('name','hidden_input'); input.setAttribute('value', value); form.appendChild(input); form.setAttribute('action','send.php'); form.setAttribute('method','post'); form.submit(); } </script> </head> <body> <a href=“javascript:sampleForm(ar)”>クリックしたら“samplepost”をPOST送信</a> </body> </html> send.php-------------------------------- <?php $num = isset($_POST['hidden_input']) ? $_POST['hidden_input'] : null; print "num: " . $num; ?>

  • オブジェクトが存在しない

    というエラーが次のhtmlファイルをブラウザで表示させようとするとでます if(document.form0.title!=null) で判断しているだけでだめみたいです そしたらdocument.form0.titleが存在するかどうかをエラーなしで判断させる方法はあるのでしょうか? <HTML> <HEAD> <script type='text/javascript'> <!-- function FormFocus() {  if(document.form0.title!=null)document.form0.title.focus(); } // --> </script> </HEAD> <body onload='javascript:FormFocus()'> <form name='form0'></form> </BODY> </HTML>

  • 次のJavaScript

    <HTML> <HEAD> ・・・・・・・・・・・・・・・・ <script type='text/javascript'> <!-- function FormFocus() { document.form0.title.focus(); <-----error } // --> </script> </HEAD> <body onload='FormFocus()'> <form name='form0' method='post' action='http://hpcgi.nifty.com/xxxx/mypage.cgi#form'> ・・・・・・・・・・・・・・・・ </body> </HTML> がerrorとしているところでエラーになります 何か間違いあれば教えてください

  • aspの表示

    こんにちは。 aspでこのように作成し、予定では、for文が回るたびに□■がどんどん変わっていくはずだったのですが、 これを実行するとメイン関数が終了したあとにHTMLが表示されてしまいます。 何か方法はないのでしょうか? よろしくお願いします。 <% Option Explicit%> <SCRIPT Language="JavaScript"> var cnt=0 var msg="□□□□□□□□□□"; function aaa() { msg=msg.replace(/□/,"■") document.textForm.box.value=msg; cnt +=1 if (cnt >9 ){ msg="□□□□□□□□□□"; cnt =0 } } </SCRIPT> <HTML> <HEAD> <title>タイトル</title> </HEAD> <BODY> <FORM> <TABLE> <TR > <TD> </TD> </TR> </TABLE> </FORM> </BODY> </HTML> <% Call Main '--------------------------------------------------- ’メイン関数 '--------------------------------------------------- Sub Main() For i=0 to 3 Response.write("<" + "SCRIPT Language=JavaScript" + ">" + " aaa(); <" + "/" + "SCRIPT>") Next End Sub %>

  • ASP.NET2.0 Javascript

    皆様はじめまして。 ASP.NET2.0にて開発中です。 初歩的な質問となってしまうかもしれませんが、テキストボックスやラベル等のコントロールのtextの値をJavascriptで取得したいのですが、下記コードではオブジェクトとなってしまいます。 どのように記述すれば値を取得できるかご教授いただけないでしょうか?? <SCRIPT language="javascript"> function window.onload() { var spread = document.all("FpSpread1"); var str = document.getElementById("lblCount"); alert(str); spread.onEditStart = estart; } function estart(event){ if (event==null) event = window.event; if (event.row >= str.value && event.col == 1) event.cancel=true; //1行目の編集開始はキャンセルする if (event.row >= str.value && event.col == 1) alert("変更するな"); } </SCRIPT> ※var str = document.getElementById("lblCount");  ←ラベルコントロールから値を取得 alert(str);                 ←アラートにて取得の確認([object]となってしまいます。) 宜しくお願い致します。

  • JavaScript動作仕様の変更!?

    以前は動作していたものが最近のIEパッチ(?)で動作しなくなった気がします。もし解決方法があれば教えて下さい! ------------------------------------- <HTML> <HEAD> <TITLE></TITLE> <SCRIPT type="text/javascript"> <!-- function test() { document.form.submit(); } function test2() { alert( "!!" ); return true; } --> </SCRIPT> </HEAD> <BODY> <FORM name="form" onSubmit="return test2()"> <INPUT type="button" value="おす" onClick="test()"> </FORM> </BODY> </HTML> ------------------------------------- 以前だと、JavaScriptでのsubmit()コマンドで、きちんとonSubmitイベントも動作していたハズなんですが、ここ数日でボタン部分を <INPUT type="submit" value="おす"> としないとonSubmitイベントが動作しなくなった様に思えます。ここ数日でWindowsUpdateした端末数台でチェックしましたが同様でした。

  • VBSからjavascript

    下記ソースの指定の箇所からjavascriptのfunction fun1(1)をよびたいのですがどう記述したらいいでしょうか。 (ちなみにbody onload=は使わない条件です) <%@ LANGUAGE = VBSCRIPT %> <html> <head> <script type="text/javascript"> <!-- //禁止、許可 function fun1(is){ var is; var i; var jj; jj=document.form1.text2.length; for (i=0;i<jj;i++){ if (is==1) document.form1.text2[i].disabled=true; if (is==2) document.form1.text2[i].disabled=false; } } //--> </script> </head> <html> <body> <form name="form1"> <input type="text" name="text2" size="14" maxlength="8" value="ABC"> <input type="text" name="text2" size="14" maxlength="8" value="DEF"> <% <-------------------ここでfun1(1)をよびたい fun(1)と書いてもエラー >% </form> </body> </html>

  • JAVASCRIPTでINPUT

    HTMLとJAVASCRIPTとJSPを使ってシステム構築をしております。 --------------- <html> <head> <SCRIPT Language="JavaScript"> <!-- function send() { alert("<input type=text name=name2>"); } // --> </SCRIPT> </head> <body> <form onSubmit="send(); return false;"> <input type=text name=name1> <input type=submit> </form> </body> </html> --------------- 上記のコードでやりたいことは、 submitボタンが押されたときにJAVASCRIPTを呼び出し JAVASCRIPT上で文字を入力し次画面へ送信するような機能を作りたいと思っているのですが、本を見てもなかなか載っていません。 もしかしたらJAVASCRIPTだけではできないかもしれません。 JSPまたはPHPで出来る機能でも良いので教えてください。

  • JavaScriptから別フレームのasp出力ドキュメントにアクセスできません。

    まず以下のソースをご覧ください。 [index.html] <html> <frameset cols=50%,*> <frame src="frame01.html"> <frame src="frame02.asp"> </frameset> </html> [frame01.html] <html> <head> <script type="text/javascript"> <!-- function insertText(){ parent.frames[1].document.myform.mytext.value = "テスト"; } // --> </script> </head> <body> <form> <input type="button" value="出力" onclick="insertText()"> </form> </body> </html> [frame02.aspにより出力されたソース内の記述] <html> <head> </head> <body> <form name="myform"> <input type="text" name="mytext"> </form> </body> </html> frames[0]のボタンを押すとframes[1]のテキストフォームに"テスト"が出力されるようにしています。 frame02.aspが静的なHTMLだった場合は問題なく動作するのですが、aspによって出力されたhtmlではエラーになってしまいます。 これはフォームに対する操作だけでなく、document.write()等のあらゆる操作に該当します。 当方はaspのことは全くわからず、またこのaspの中身を書き換える権限もありません。あくまで出力された結果に対して動的に操作を加えたいのです。 原因としては次のようなものを考えました。 ・aspドキュメントのパスに対してアクセス権限が無い。 ・aspもしくはCGIの実行によってもたらされたHTMLに対してはスクリプトは動作しない。 ・実際の出力結果のヘッダにはJavaScriptが記述されており、これが何らかの影響を及ぼしている。 ・事前にスクリプトから操作を受けないようにプロテクトされている。 ご助力を願えれば幸いです。

  • javascript confirmでFORM送信

    javascript confirmにて「この点数で良ければ送信する」というものを考えています。 この点数部分は変数になる予定であり、javascript内部で生成されます。 まずは、変数ではなく固定値として、javascriptの中にある数値を<form></form>の中に生成することを考えましたがいきなりつまずきました。 「100という数値を送信」するつもりだったのですが、うまく送信することが出来ません。 どこを修正すればいいかご教示いただきたくお願いいたします。 <html> <head> <title>submit</title> </head> <script language="javascript"> <!-- function frmSubmit() { var errFlag=true; if(errFlag==false) { return; } if(confirm("100点です。送信しますか?")) { document.frm.submit(); document.getElementById("plus").value ="100"; } else { } } //--> </script> <body> <form method="post" action="form.cgi" name="frm" target="_self"> <input type="HIDDEN" id="plus" value="" /><br /> <input type="button" value="send" onclick="frmSubmit();"> </form> </body> </html>