代码之家  ›  专栏  ›  技术社区  ›  rob.m

如何完全避免粘贴?

  •  0
  • rob.m  · 技术社区  · 7 年前

    我尝试了以下操作,但我可以继续粘贴到checkeditor上吗?

    ckEditor 5

    $(document).ready(function () {
          var ambit = $(document);
    
          // Disable Cut + Copy + Paste (input)
          ambit.on('copy paste cut', function (e) {
              e.preventDefault(); //disable cut,copy,paste
              return false;
          });
    
          // Disable Cut + Copy + Paste and Browser Admin Tools (all document)
          ambit.keydown(function (e) {
              var forbiddenCtrlKeys = new Array('c', 'x', 'v', 'ins', 'u');
              var forbiddenShiftKeys = new Array('del', 'ins', 'f2', 'f4', 'f7');
              var forbiddenCtrlShiftKeys = new Array('k', 'i', 'm', 's', 'j');
              var keyCode = (e.keyCode) ? e.keyCode : e.which;
    
              var isCtrl, isShift;
              isCtrl = e.ctrlKey;
              isShift = e.ctrlShift;
    
              string = getKeyCodeString(keyCode);
    
              if (string == 'f12')
              {
                  e.preventDefault();
                  return false;
              }
    
              if (isCtrl && !isShift) {
                  for (i = 0; i < forbiddenCtrlKeys.length; i++) {
                      if (forbiddenCtrlKeys[i] == string) {
                          e.preventDefault();
                          return false;
                      }
                  }
              }
    
              if (!isCtrl && isShift) {
                  for (i = 0; i < forbiddenShiftKeys.length; i++) {
                      if (forbiddenShiftKeys[i] == string) {
                          e.preventDefault();
                          return false;
                      }
                  }
              }
    
              if (isCtrl && isShift) {
                  for (i = 0; i < forbiddenCtrlShiftKeys.length; i++) {
                      if (forbiddenCtrlShiftKeys[i] == string) {
                          e.preventDefault();
                          return false;
                      }
                  }
              }
    
              return true;
          });
    
          var getKeyCodeString = function(keyCode)
          {
              var string;
              switch (keyCode) {
                  case 45:
                      string = 'ins'; break;
                  case 46:
                      string = 'del'; break;
                  case 113:
                      string = 'f2'; break;
                  case 115:
                      string = 'f4'; break;
                  case 118:
                      string = 'f7'; break;
                  case 123:
                      string = 'f12'; break;
                  default:
                      string = String.fromCharCode(keyCode);
                      break;
              }
              return string.toLowerCase();
          }
    
        function ignorePaste() {
          $("[data-ignorepaste]").on("cut copy paste", function (e) {
            e.preventDefault(); //prevent the default behaviour 
          });
        };
    
        $(".ck-editor__editable").attr("data-ignorepaste");
          ignorePaste();
      });
    
    1 回复  |  直到 7 年前
        1
  •  0
  •   nicholaswmin    7 年前

    你应该 preventDefault paste window 级别或在该级别的父级上 <textarea> 如果你不想 粘贴 全球地。

    确保你包括 true 作为 addEventListener 因此,事件在 .

    window.addEventListener('paste', e => {
      e.preventDefault()
      e.stopPropagation()
    }, true)
    <h4> Paste disabled: </h4>
    <textarea id="textarea"></textarea>