• ベストアンサー

HPにおける画像ガードのかけかたscriptについて

HPを作っていて画像ファイルのDL禁止のために次の手法をとっています。 (stylesheet) span.guard{ position:absolute; display:block; width:100%; height:100%; background-image:url(spacer.gif); } 本文(imgの前に) <span class="guard"></span> これで表示画像はガードがかかっています。 そして更にこの画像を <script language="JavaScript"><!-- var pname;function img_sc(nam){pname=nam;myphoto=new Image();myphoto.src=nam+".JPG";} function win_op(){if(myphoto.complete){x=myphoto.width+20;y=myphoto.height+30;window.open(myphoto.src,pname,"menubar=no,scrollbars=yes,resizable=no,width="+x+",height="+y);}} //--></script> 本文 <a href="javascript:void(0);" onmouseover="img_sc('DSC_8262');" onclick="win_op();" title="拡大表示"> として別窓表示をしています。 ところがこの別窓表示の方にはガードがかけられません。 上のガードのかけ方を別窓にも適用する方法はありますか?

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

  • ベストアンサー
  • abacabu
  • ベストアンサー率37% (250/663)
回答No.2

趣味でHPを製作している者です No,1さんの回答を受けてHTMLページで拡大画像を表示するなら ブロックの他にJavaScriptで右クリック禁止を設定しては どうでしょうか?余りPCに詳しくない人には絶対画像を取れませんし、 これもまぁ気の持ちよう的物ではありますが…。 function RestrictRightClick(myButton){ if(document.all) {           ここから if(event.button==2) { alert('右クリックは制限されております'); return false;                IE用 } }                    ここまで else if(document.getElementById) {   ここから if(myButton.which==3) { location.href='event2_blank.html'; alert('右クリックは制限されております');   N6用 location.href='サブページのURL'; } }                     ここまで            if(document.layers){            ここから if(myButton.which==3) { alert('右クリックは制限されております'); return false;                  N4用 } }                      ここまで } if(document.all || document.getElementById)   ここも document.onmousedown=RestrictRightClick;      N4用 if(document.layers){ window.captureEvents(Event.MOUSEDOWN); window.onmousedown=RestrictRightClick; }

noro6857
質問者

お礼

ありがとうございます。 scriptの知識はないのでこのソースをベタッと張り付けてみました。 保存メニューも消えて、これならガードもバッシリですね。 これを第1ファイルの方にも使用するとしたら記述が変わってくるんでしょうね。 ところでリンクさせるhtmlファイル、元ファイルは画像をもとに自動生成していますが、リンク先ファイルはファイル名や表示させるリンク画像を画像にあわせるため手動で作成しなければならず、毎回50枚ほど新たに作るとけっこう大作業なので目下思案中です。

その他の回答 (2)

noname#23734
noname#23734
回答No.3

function win_op(){ if(myphoto.complete){ x=myphoto.width+20; y=myphoto.height+30; window.open('???.html#'+myphoto.src.replace(/\.jpg/,''),pname,"menubar=no,scrollbars=yes,resizable=no,width="+x+",height="+y);} ???.html window.onload=function(){ isrc=(window.location+"").split('#')[1] document.body.style.backgroundImage='url('+isrc+'.jpg)' document.body.style.backgroundRepeat="no-epeat" } 気休めになりませんかね。

noro6857
質問者

お礼

お手数をかけます。 張り付け方が上記の場合わかりかねていますが 前段が元ファイル、後段(???.html以降)がリンク先ファイルに貼り付けるということでしょうか。 そして前段の「???.html#」はリンクするファイル名を記述するということでょうか。 あと基本的な質問として、これらはjavascript宣言して、先に書いたstyleのガードと併用すればいいのですよね?

  • STICKY2006
  • ベストアンサー率29% (1536/5269)
回答No.1

こんちくは。 まぁ、ちょっと無理じゃない。。。?と思うんですけどねぇ。 自分の方法が気に食わない場合は、もっと詳しい方の回答を待ってみてください。 >>別窓表示の方にはガードがかけられません まぁ、「画像」を直接開いているので、無理っちゃ無理な気がしなくもないですけどね。 JavaScriptで開く時に、Styleの中身も一緒に渡せれば。。。とか思いますけど、自分には思いつきませんので。 「画像を開く」のではなく、「画像を表示しているHTMLを開く」に変更すれば容易ですよね。 画像をクリックすると表示。ですよね? その際に指定するのを「.jpg」の画像にしないで、「.html」にしちゃえば、適用は楽かと。 まぁ、1つ多くファイルが存在するので、邪魔にはなるかもしれませんけどね。 >>画像ファイルのDL禁止のために えーと。ご存知かどうかは分かりませんが、余談です。 分かっていた上でのことでしたら失礼します。 インターネット上にWebページを作り、公開している時点で、不可能です。 「利用者がそのWebページにアクセスし、利用した段階」でほぼ全てが利用者側にDLされていると思ってください。 基本的に、「Webページを表示するのに必要な情報をDLしてきて、利用者のパソコンで表示する」のですから、アクセスした時点で、ほとんどの情報は利用者のパソコンの中に入っています。 XPの場合だと、Cドライブ内の隠しフォルダ内にある「Temporary Internet Files」とかに入ってますけど。 「初めて接続するWebページは表示するまでに時間がかかるけど、2回目に接続したら前よりもスムーズに行った」 とかってのは、ここにDLした情報を使って表示させている場合があるから、早かったりします。 「インターネット上で公開する限りは絶対にDLさせない!」ってのは不可能だとは覚えておいてみてください。 (ぶっちゃけ、画像ファイルならPrintScreenで十分ですしね。

noro6857
質問者

お礼

どうもありがとうございます。 別窓でできなかったら、ご説明にあるようにhtmlリンクをさせて同じかけ方をするっきゃないですね。 それとたしかに画像でもMIDIでもいくら見栄えでガードかけてもそのコツさえ知っていればtempに入るわけだしPrintScreenでも可能なので、すべてDLできちゃうから、絶対的なことはできないのですが、まぁ気の持ちようということで(笑)。

関連するQ&A

専門家に質問してみよう