Можно ли отключить щелчок правой кнопкой мыши по фрейму? - PullRequest
3 голосов
/ 16 февраля 2010

Можно ли отключить щелчок правой кнопкой мыши по фрейму? Я знаю, что это возможно, если файл в iframe находится в том же домене, но мне было интересно, можно ли это сделать, если файл во фрейме был с внешнего сайта?

спасибо

Ответы [ 5 ]

10 голосов
/ 16 февраля 2010

Вы не можете действительно отключить контекстное меню для начала. Вы можете строить только хрупкие баррикады, чтобы люди не могли его вызвать Но тот факт, что это внешний iframe, только усугубляет проблему. Нет, вы не можете запретить пользователям активировать контекстное меню в вашем фрейме. К сожалению.

4 голосов
/ 16 февраля 2010

работает в 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>
0 голосов
/ 13 марта 2018

да, для обеспечения безопасности PDF можно сделать все следующее: отключить загрузку, печать, сохранение, печать экрана и любую кнопку на клавиатуре.

следуй за моим проектом .....

1. Установите сервер для запуска файлов php (иначе используйте usb portable server) 2. Создайте папку «Pdf_Files» в своем проекте и вставьте в нее ваши файлы PDF. 3. скачать проект 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. Запустите веб-браузер и введите URL-адрес - "localhost:" port "/test.php"
  3. Добавить любой файл PDF в эту папку. Папка «Pdf_Files»
  4. Обновить браузер
  5. Добавлена ​​автоматическая выборка файлов в окне браузера с именем.
0 голосов
/ 11 ноября 2013

Возможно, если вы создадите div, и к этому Div вы должны добавить z-index.

После настройки width, height добавьте filter:alpha(opacity=50); opacity:0.5;, после чего вы добавляете conde на свой сайт, блокируя правый клик ...

0 голосов
/ 16 февраля 2010

Нет, это невозможно, если он находится на внешнем домене. Щелчок мыши или любое другое событие начинается с первого, самого верхнего элемента, на котором оно запускается, и затем возвращается обратно по цепочке элементов (если распространение не остановлено). Если вы попытались остановить его на содержащем документе, он уже сработал с соответствующими элементами дочернего документа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...