• ベストアンサー

印刷時に消したいjavascriptがある

印刷用のcssを読み込んでいるのですが、 困ったことに、javascriptで無理やり表示している要素がありまして、 そのソースは外部サイトを読み込んでいるので、 こちらサーバーで指定したcssのdisplay:noneは一切ききません。 そこで、印刷時には<script></script>を消すみたいな ことをしたいのですが、そのようなことを可能でしょうか。 javascirptでなくてもphpでも大丈夫です。 cssのmediaとprintのように何かフラグが取得できればいいのですが・・・ ご教授お願いいたします。

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

  • ベストアンサー
  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.2

>困ったことに、javascriptで無理やり表示している要素がありまして、 >そのソースは外部サイトを読み込んでいるので、 クロスドメインになっているということでしょうか? フレームとかインラインフレームを使用して、その一部分だけを印刷したくないという意味? それともajaxなどを利用しているのでしょうか? >そこで、印刷時には<script></script>を消すみたいな~ 一旦、実行してからスクリプトタグを消したところで、表示内容が元に戻るわけではないので、意味がないと思いますけど? …ということは、その一部だけを消したいのではなくて全部を消せればよいということですよね? その部分を包含するような要素を事前に作成しておくわけにはいかにのでしょうか? 実際のスクリプトで何が行なわれているのか不明なのでわかんないけど、包含する要素をあらかじめ作成しておけるのなら、簡単に制御可能ですよね? あるいは、外部サイトを読込む前に、DOMのクローンを作成して非表示にしておいて、印刷のときはそちらを印刷するとか…(なんか、ばかばかしいけど) よくわかんないけど、php側で制御しても良いのなら(phpはよく知りませんけど)、javasdcriptで外部サイトを読込む代わりに、phpで先に読込んで編集してからHTML出力すればCSSがそのまま適用できると思いますが? (外部サイトを自サイトに見せかけるのと同じようなことになるので、ちょっと二の足を踏むけれど…) No1様の方法(プリント用のページを用意する)が、一番素直な方法に思えますけどね。

trfnc223
質問者

お礼

ご回答ありがとうございます。 、 jsで別ドメインのframe内に読み込まれているような 感じになります。 詳しくどのような仕組みになっているの変わらないのですが、 ともかくそのframeを表示するための jsが邪魔をしていることは確実なので、 jsタグだけ印刷時に消せたらな~と思っていたんですが・・・ どうやら勘違いしていたんですが、 印刷プレビューはページを再度リロードして 読み込んでいるわけではなさそうですね・・・ その時にでも、jsのタグだけ取り除ければと 考えていたんですが・・・

その他の回答 (1)

  • yyr446
  • ベストアンサー率65% (870/1330)
回答No.1

ページが表示された時点で既に外部サイトのscriptが読み込まれ 実行されてしまっているので、後から無かった事にするのは不可能だと 思います。 たとえ<script>タグに<script print_flag="off" src=....>みたいに 識別用の属性を無理やりつけたとしても、読み込まれた後からでは、制御が困難かと.... 素直に、プリント用のページを別に用意しておいて、印刷時にそちらに遷移させる のが常套かと。 phpでやるにしても、考え方は同じで、印刷ボタンが押されたら、そのscript要素を除いた状態で再出力するようにするだけかと思う。

trfnc223
質問者

お礼

ご回答ありがとうございます。 やっぱり無理なんですかね・・・ もう少し調べてみます。 まだまだ、ご回答お待ちしております。

関連するQ&A

専門家に質問してみよう