是否可以禁用右键单击iframe?

时间:2010-02-16 16:17:25

标签: javascript iframe

是否可以禁用右键点击iframe? 我知道iframe中的文件可能位于同一个域中,但是我想知道如果框架中的文件来自外部网站是否可以完成?

感谢

5 个答案:

答案 0 :(得分:10)

您无法真正禁用上下文菜单。 You can only construct fragile barricades to keep people from invoking it。但事实上,这是一个外部iframe只会使问题复杂化。不,您无法阻止用户激活iframe上下文菜单。遗憾。

答案 1 :(得分:4)

适用于IE以禁用对iframe的右键单击,但问题是它不适用于外部网站,,, iframed文件必须在同一个域...看看它

<html>
<head>
<title>Disable Context Menu</title>
<script type="text/jscript">
  function disableContextMenu()
  {
    window.frames["fraDisabled"].document.oncontextmenu = function(){alert("No way!"); return false;};   
    // Or use this
    // document.getElementById("fraDisabled").contentWindow.document.oncontextmenu = function(){alert("No way!"); return false;};;    
  }  
</script>
</head>
<body bgcolor="#FFFFFF" onload="disableContextMenu();" oncontextmenu="return false">
<iframe id="fraDisabled" width="528" height="473" src="local_file.html" onload="disableContextMenu();" onMyLoad="disableContextMenu();"></iframe>
</body>
</html>

答案 2 :(得分:0)

不,如果它在外部域上则不可能。鼠标单击或任何其他事件从它触发的第一个最顶层元素开始,然后以元素链的形式返回(除非传播停止)。如果您试图在包含文档中将其停止,则它已经触发了子文档的相关元素。

答案 3 :(得分:-1)

如果您创建div,则有可能在此Div中添加z-index

配置widthheight后,添加filter:alpha(opacity=50); opacity:0.5;,然后在您的网站上添加一个conde,阻止右键点击...

答案 4 :(得分:-1)

是的,可以执行以下所有操作:禁用下载,打印,保存,打印屏幕以及键盘上的任何按钮,以便为PDF提供安全保障。

关注我的项目......

1。安装服务器运行php文件(否则使用usb便携式服务器) 2.创建&#34; Pdf_Files&#34;项目中的文件夹并将PDF文件粘贴到其中。 3.download pdf.js项目 4.写下以下代码......

<强> blocked.js

$(function() //right click disabled
{
    $(this).bind('contextmenu',function()
    {
        alert("Function disabled");
        return false;
    })
});

function copyToClipboard() {
  var aux = document.createElement("input");
  aux.setAttribute("value", "Function Disabled.....");
  document.body.appendChild(aux);
  aux.select();
  document.execCommand("copy");
  document.body.removeChild(aux);
  alert("Print screen disabled.");
}

function blockPrint() {
  alert("Print is not allowed...");
}

 function PreSaveAction() { 
    alert("saving..");
 }

$(function()
{
    $(this).keyup(function(e){
      if(e.keyCode == 44 || e.keyCode == 137 ||e.KeyCode == 93 )
      //100 Save 137 SHift F10 93 RightClick 44 PrintScreen
      {
        copyToClipboard();
        return false;
      }
    })
}); 

//disable Ctrl + keys
document.onkeydown = function (e) {
    e = e || window.event;//Get event
    if (e.ctrlKey) {
        var c = e.which || e.keyCode;//Get key code
        switch (c) {
            case 83://Block Ctrl+S
            case 80 : //block Ctrl+P
            case 17 : //block Ctrl
            case 16 : //block Shift
                e.preventDefault();     
                e.stopPropagation();
                alert("key disabled");
            break;
        }
    }
};


$(window).focus(function() {
  $("body").show();
}).blur(function() {
  $("body").show();
});

function setClipBoardData(){ //override system function - make clipBoard null always
    setInterval("window.clipboardData.setData('text','')",20);
}
function blockError(){
    window.location.reload(true);
    return true;
} 

<强> MyIframe.php

<html>
<head>
    <title> </title>
    <script type="text/javascript" src="http://code.jquery.com/jquery-1.8.2.js"></script>
    <script type="text/javascript" src="blocked.js"></script>
    <link rel="stylesheet" type="text/css" href="myStyle.css">
</head>

<body onbeforeprint="copyToClipboard()" >
<?php

    $file = './Pdf_Files/';

    if( isset($_REQUEST["path"] ) )
        $file .= $_REQUEST["path"];

    echo ' <iframe src="pdfjs/web/viewer.html?file=../../'. $file .'#toolbar=0&navpanes=0"  /> ';

?>

</body>
</html>

<强> myStyle.css

@media print { * {  display: none; } } /* make print blank */

iframe {
    height: 100%;
    width:100%;
    padding:0;
    overflow-x: scroll;
    border:none;
    overflow-y: scroll;
}

/* disable selection highlighting, from https://stackoverflow.com/a/4407335 */
* {
    -webkit-touch-callout: none; /* iOS Safari */
    -webkit-user-select: none; /* Safari */
     -khtml-user-select: none; /* Konqueror HTML */
       -moz-user-select: none; /* Firefox */
        -ms-user-select: none; /* Internet Explorer/Edge */
            user-select: none; /* Non-prefixed version, currently
                                  supported by Chrome and Opera */
}

input[type="submit"] {  /* make submit btn as link */
    background:none!important;
    color:inherit;
    border:none; 
    padding:0!important;
    font: inherit;
    border-bottom:1px solid #444; 
    cursor: pointer;
}

<强> test.php的

<html>
<head>
<title>  </title>

<script type="text/javascript" src="http://code.jquery.com/jquery-1.8.2.js"></script>
<script type="text/javascript" src="blocked.js"></script>
<link rel="stylesheet" type="text/css" href="myStyle.css">

<body>
    <form method="post" action="MyIframe.php" >

    <table align="center" width="800px" cellspacing="20px" >
<?php

    $path = './Pdf_Files/';
    $count = 0;

    if( $handler = opendir( $path ) )   
    {
        while( false !== ($file = readdir($handler)))
        {
            if( strpos($file, '.pdf' ) !== false )          
            {
                if( $count++ % 2 == 0 ) //make cloumn count 2
                    echo '<tr>';

                echo '<td> * <input type="submit" name="path" value="'. $file .'" /> </td> ';
            }
        }
        closedir($handler);
    }

?>

    </table>
</form>

</body>
</html>

使用这个完整的项目,您可以为PDF文件提供任何类型的安全性,即使您可以阻止任何键盘进行保护。

执行

的步骤
  1. 启动服务器
  2. 启动网络浏览器&amp;输入网址 - &#34; localhost:&#34; port&#34; /test.php"
  3. 在此文件夹中添加任何pdf文件&#34; Pdf_Files&#34;夹
  4. 刷新浏览器
  5. 在浏览器窗口上添加了名称为autometicaly fetch的文件。