2017-07-17 21 views
0

私はすべての要素「のiframe」オン「を右クリックし '」イベントでの表示から、ブラウザのコンテキストメニューを防ぐためにしようとしていますが、それは動作していない - コンテキストメニューはまだここ
を働いているが、私のコードです:iframe内のコンテキストメニューを防ぐ方法は?

$(document).ready(function() { 
 
     $("iframe").each(function(){ 
 
      $(this).on("contextmenu",function(e){ 
 
       e.preventDefault(); //return false; 
 
      }); 
 
     }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<iframe src="http://www.google.com"></iframe>

+0

回答を見る:https://stackoverflow.com/a/11224303/2112538 –

+0

これは、 { if(event。=== 3) \t \t \t { \t \t \t return false; \t \t \t} });しかし、うまくいきませんでした:(助けてください。) –

答えて

1

ブラウザの各ウィンドウ、タブ、およびiframeは、セキュリティコンテキストが異なり、それぞれが別のものからサンドボックスされています。これは、あるページが別のページを改ざんできないようにするためです。

したがって、iframeのスタイル、スクリプト、およびスクリプトへのアクセスはiframe要素自体に制限され、内容には制限されません。同様に、iframeは同じセキュリティ上の理由からその親にアクセスできません。

iframe内のコンテキストメニューを防止する唯一の方法は、iframe自体の内部にコンテキストメニュー防止スクリプトを読み込むことです。 iframeのコンテンツにアクセスできない場合、それは不可能です。そうした場合、そのiframe内で第三者のウェブサイトがどのように動作するかを妨げる可能性があります。

0

私は、あなたが探しているものを行おうとするJSFiddleを作成しましたが、あなたが何をしようとしていることはiframeタグでは不可能であると思われます。ブラウザは、iframeの特定の規則を適用するつもりです&は、ウェブ開発者のCSS & JSプログラミングコードをオーバーライドします。

.contextmenu()メソッドのjQueryの例では、divタグを使用できます。

私のJSFiddleデモでは、右クリックメニューはライムグリーンのdivタグでのみブロックされ、iframeタグではブロックされていないようです。

divタグ&にiframeをラップしようとしても、divタグに堅実な背景色を付けると、ブラウザはiframeのz-indexをdivタグのz-indexより上に強制的に移動させますユーザーが他のコンテンツの下のiframeを隠すのを防ぐためです。&広告やスクリプトを読み込んで、その隠れたコンテンツを見たりアクセスしたりすることはできません。

iframeのsrcファイルの内側から、次のように読み込む必要があります。

<script> 
    $(function() { 
     $("body").contextmenu(function(e) { 
      e.preventDefault(); 
     }); 
    }); 
</script> 

bodyタグで動作する可能性がありますが、動作することを確認していません。それがうまくいけば、iframeタグ&にロードされているあなたのウェブページでのみ動作します。

申し訳ありませんが、このシナリオでやりたいことをすることができない場合があります。私のJSFiddleで遊んでみてください。たぶんあなたは回避策を見つけ出すことができます、それはあなたに受け入れられるでしょう。 :)

+0

iframeのコンテキストメニューを防ぐことができません:((私はすでに本体の本体でそれを防いでいますが、 iframeがコンテキストメニューをアンロードしないようにする) –

関連する問題