javascript - Ctrl+V, Ctrl+C কিভাবে জাভাস্ক্রিপ্ট ব্যবহার করে?



jquery html (15)

গুরুত্বপূর্ণ তথ্য

আমি e.keyCode জন্য ই। e.keyCode ব্যবহার e.keyCode এবং আমি এটি সনাক্ত e.keyCode যখন আমি ctrl + টিপুন , এই বৈশিষ্ট্যটি একটি ভুল সংখ্যা, 190, যখন অ্যাসিসি কোড প্রদান করে . 46!

সুতরাং e.key.toUpperCase().charCodeAt(0) পরিবর্তে e.key.toUpperCase().charCodeAt(0) ব্যবহার করা উচিত।

কিভাবে Ctrl + v , ctrl + c জাভাস্ক্রিপ্ট ব্যবহার করে সনাক্ত করবেন?

আমার টেক্সটেয়ারগুলিতে পেস্টিং সীমাবদ্ধ করতে হবে, শেষ ব্যবহারকারীকে সামগ্রী অনুলিপি করতে এবং পেস্ট করতে হবে না, ব্যবহারকারীকে টেক্সরেয়ার পাঠ্য টাইপ করা উচিত।

কিভাবে এই অর্জন?


এটি প্রতিরোধ করার কিছু উপায় আছে।

তবে ব্যবহারকারী সর্বদা জাভাস্ক্রিপ্ট বন্ধ করতে বা পৃষ্ঠার উত্স কোডটি দেখতে সক্ষম হবেন।

কিছু উদাহরণ (jQuery প্রয়োজন)

/**
* Stop every keystroke with ctrl key pressed
*/
$(".textbox").keydown(function(){
    if (event.ctrlKey==true) {
        return false;
    }
});

/**
* Clear all data of clipboard on focus
*/
$(".textbox").focus(function(){
    if ( window.clipboardData ) {
        window.clipboardData.setData('text','');
    }
});

/**
* Block the paste event
*/
$(".textbox").bind('paste',function(e){return false;});

সম্পাদন: কিভাবে টিম ডাউন বলেন, এই ফাংশন সব ব্রাউজার নির্ভরশীল।


পরিবর্তে onkeypress, onkeydown ব্যবহার করুন।

<input type="text" onkeydown="if(event.ctrlKey && event.keyCode==86){return false;}" name="txt">

লাইভ ডেমো: http://jsfiddle.net/abdennour/ba54W/

$(document).ready(function() {

    $("#textA").bind({
        copy : function(){
            $('span').text('copy behaviour detected!');
        },
        paste : function(){
            $('span').text('paste behaviour detected!');
        },
        cut : function(){
            $('span').text('cut behaviour detected!');
        }
    });

}); 

আপনি ডানক্লিকের জন্য এই কোডটি ব্যবহার করতে পারেন, CTRL + C , CTRL + V , CTRL + X সনাক্ত এবং তাদের কর্ম রোধ করতে পারেন

$(document).bind('copy', function(e) {
        alert('Copy is not allowed !!!');
        e.preventDefault();
    }); 
    $(document).bind('paste', function() {
        alert('Paste is not allowed !!!');
        e.preventDefault();
    }); 
    $(document).bind('cut', function() {
        alert('Cut  is not allowed !!!');
        e.preventDefault();
    });
    $(document).bind('contextmenu', function(e) {
        alert('Right Click  is not allowed !!!');
        e.preventDefault();
    });

JQuery এর সাহায্যে ফাংশনটি বাঁধার মাধ্যমে আপনি অনুলিপি, পেস্ট ইত্যাদি সনাক্ত করতে পারেন:

$("#textA").bind('copy', function() {
    $('span').text('copy behaviour detected!')
}); 
$("#textA").bind('paste', function() {
    $('span').text('paste behaviour detected!')
}); 
$("#textA").bind('cut', function() {
    $('span').text('cut behaviour detected!')
});

এখানে আরও তথ্য: http://www.mkyong.com/jquery/how-to-detect-copy-paste-and-cut-behavior-with-jquery/


আমি ইতিমধ্যে আপনার সমস্যা আছে এবং আমি নিম্নলিখিত কোড দ্বারা এটি সমাধান .. যে শুধুমাত্র সংখ্যা গ্রহণ

$('#<%= mobileTextBox.ClientID %>').keydown(function(e) {
            ///// e.which Values
            // 8  : BackSpace , 46 : Delete , 37 : Left , 39 : Rigth , 144: Num Lock 
            if (e.which != 8 && e.which != 46 && e.which != 37 && e.which != 39 && e.which != 144
                && (e.which < 96 || e.which > 105 )) {
                return false;
            }
        });

আপনি Ctrl id e.which == 17 সনাক্ত করতে পারেন


আপনি ctrlKey সম্পত্তি ব্যবহার করলে, আপনাকে রাষ্ট্র বজায় রাখতে হবে না।

   $(document).keydown(function(event) {
      // Ctrl+C or Cmd+C pressed?
      if ((event.ctrlKey || event.metaKey) && event.keyCode == 67) {
         // Do stuff.
      }

      // Ctrl+V or Cmd+V pressed?
      if ((event.ctrlKey || event.metaKey) && event.keyCode == 86) {
         // Do stuff.
      }

      // Ctrl+X or Cmd+X pressed?
      if ((event.ctrlKey || event.metaKey) && event.keyCode == 88) {
         // Do stuff.
      } 
    }

আপনি কিপ্রেস ইভেন্টটি শুনতে পারেন এবং নির্দিষ্ট কীকোডগুলির সাথে মিললে ডিফল্ট ইভেন্ট (পাঠ্য প্রবেশ করানো) থামাতে পারেন


সেটি ভুলবেন না, যখন আপনি Ctrl + C / V সনাক্ত এবং অবরোধ করতে সক্ষম হবেন, আপনি এখনও একটি নির্দিষ্ট ক্ষেত্রের মানটি পরিবর্তন করতে পারেন।
এর জন্য সেরা উদাহরণ হল Chrome এর ইন্সপেক্ট এলিমেন্ট ফাংশন, এটি আপনাকে একটি ক্ষেত্রের মান-সম্পত্তি পরিবর্তন করতে দেয়।


এটি করার আরেকটি উপায়: onpaste , oncopy এবং oncut ইভেন্টগুলি IE, ফায়ারফক্স, ক্রোম, সাফারি (কিছু ক্ষুদ্র সমস্যাগুলির সাথে) -এ নিবন্ধিত এবং বাতিল করা যেতে পারে, এই ইভেন্টটি বাতিল করার অনুমতি দেয় না এমন একমাত্র বড় ব্রাউজার অপেরা।

আপনি Ctrl + v এবং Ctrl + c রোধে আমার অন্যান্য উত্তরগুলিতে দেখতে পারেন অনেক পার্শ্বপ্রতিক্রিয়া সহ, এবং এটি এখনও ব্যবহারকারীদের ফায়ারফক্স Edit মেনু ব্যবহার করে আটকাতে বাধা দেয় না।

function disable_cutcopypaste(e) {
    var fn = function(evt) {
        // IE-specific lines
        evt = evt||window.event
        evt.returnValue = false

        // Other browser support
        if (evt.preventDefault) 
            evt.preventDefault()
        return false
    }
    e.onbeforepaste = e.onbeforecopy = e.onbeforecut = fn
    e.onpaste = e.oncopy = e.oncut = fn
}

সাফারিটিতে এখনও এই পদ্ধতির সাথে কিছু ক্ষুদ্র সমস্যা রয়েছে (ডিফল্ট রোধে এটি কপি / কপি জায়গায় ক্লিপবোর্ডটি সাফ করে) তবে সে বাগ এখন ক্রোমে সংশোধন করা হয়েছে।

আরও দেখুন: http://www.quirksmode.org/dom/events/cutcopypaste.html এবং সংশ্লিষ্ট তথ্যের জন্য http://www.quirksmode.org/dom/events/tests/cutcopypaste.html আরও তথ্যের জন্য।


আরেকটি পদ্ধতির (কোনও প্লাগইন প্রয়োজন) এটি কেবলমাত্র ইভেন্ট বস্তুর ctrlKey সম্পত্তিটি ব্যবহার করতে ctrlKey হয়। এটি ইভেন্টের সময় Ctrl টি চাপলে তা নির্দেশ করে:

$(document).keypress("c",function(e) {
  if(e.ctrlKey)
    alert("Ctrl+C was pressed!!");
});

এছাড়াও jquery দেখুন : কীপ্রেস, ctrl + c (অথবা কিছু কম্বো এটির মত) ।


আমি একটি jQuery প্লাগইন লিখেছিলাম, যা কীস্ট্রোকগুলি ধরে রাখে। এটি ওএস ছাড়া ফরম্যাটে এইচটিএমএল ফর্মগুলিতে একাধিক ভাষা স্ক্রিপ্ট ইনপুট সক্ষম করতে ব্যবহার করা যেতে পারে। এর প্রায় 300 লাইন কোড, সম্ভবত আপনি একটি চেহারা নিতে চান:

সাধারণত, যেমন ধরনের পরিবর্তন সঙ্গে সতর্কতা অবলম্বন করা। আমি ক্লায়েন্টের জন্য প্লাগইন লিখেছিলাম কারণ অন্যান্য সমাধানগুলি উপলব্ধ ছিল না।


প্রসঙ্গ মেনু ব্যবহার করে ব্যবহারকারীকে প্রতিরোধ করার জন্য সংক্ষিপ্ত সমাধান, কপি এবং jQuery এ কাটা:

jQuery(document).bind("cut copy contextmenu",function(e){
    e.preventDefault();
});

এছাড়াও CSS এ পাঠ্য নির্বাচন নিষ্ক্রিয় করা সহজ হতে পারে:

.noselect {  
    -webkit-touch-callout: none;
    -webkit-user-select: none;
    -khtml-user-select: none;
    -moz-user-select: none;
    -ms-user-select: none;
     user-select: none;
}

যখন যোগ করা হচ্ছে "use strict";, স্ক্রিপ্টটি কার্যকর হওয়ার আগে নিম্নলিখিত ক্ষেত্রে একটি সিনট্যাক্স ত্রুটি ফুরিয়ে যাবে :

  • ভবিষ্যতে এর নাম ECMAScript সংস্করণের জন্য বদলের , (দূরদৃষ্টি জন্য সদ্য সংরক্ষিত মূলশব্দ ব্যবহার করে এর নাম ECMAScript 6 ): implements, interface, let, package, private, protected, public, static, এবং yield

  • ব্লক ফাংশন ঘোষণা

    if(a<b){ function f(){} }
    
  • অক্টাল সিনট্যাক্স

    var n = 023;
    
  • this গ্লোবাল বস্তুর দিকে নির্দেশ করুন।

     function f() {
          "use strict";
          this.a = 1;
     };
     f(); 
    
  • একটি বস্তু আক্ষরিক মধ্যে একটি সম্পত্তি নামের জন্য একই নামের দ্বিগুণ ঘোষণা

     {a: 1, b: 3, a: 7} 
    

    এই আর ECMAScript 6 ( বাগ 1041128 ) ক্ষেত্রে হয় না ।

  • একই নাম ফাংশন সঙ্গে দুটি ফাংশন আর্গুমেন্ট ঘোষণা

    f(a, b, b){}
    
  • একটি undeclared পরিবর্তনশীল একটি মান নির্ধারণ করা হচ্ছে

    function f(x){
       "use strict";
       var a = 12;
       b = a + x*35; // error!
    }
    f();
    
  • deleteএকটি পরিবর্তনশীল নাম ব্যবহার করেdelete myVariable;

  • ব্যবহার evalবা argumentsপরিবর্তনশীল বা ফাংশন যুক্তি নাম হিসাবে

    "use strict";
    arguments++;
    var obj = { set p(arguments) { } };
    try { } catch (arguments) { }
    function arguments() { } 
    

সূত্র:





javascript jquery html