জাভাস্ক্রিপ্টে দীর্ঘ প্রেস?


117

জাভাস্ক্রিপ্ট (বা jQuery) এ "দীর্ঘ প্রেস" প্রয়োগ করা সম্ভব? কিভাবে?

বিকল্প পাঠ
(উত্স: androinica.com )

এইচটিএমএল

<a href="" title="">Long press</a>

জাভাস্ক্রিপ্ট

$("a").mouseup(function(){
  // Clear timeout
  return false;
}).mousedown(function(){
  // Set timeout
  return false; 
});

7
আমি সম্ভবত আপনার jQuery(...).longclick(function() { ... });
কোডটিকে

1
প্রশ্নটি jQuery এর সাথে ট্যাগ করা হয়নি, যদিও এটি হওয়া উচিত। প্রশ্নটি প্রথমে একটি খাঁটি জাভাস্ক্রিপ্ট সমাধানের জন্য জিজ্ঞাসা করে, যা আমি পছন্দ করি বা allyচ্ছিকভাবে (প্রথম বন্ধনীতে), একটি jQuery সমাধান। সর্বাধিক উত্তরগুলি স্ট্যান্ডার্ড অনুমান হিসাবে jQuery এ ডিফল্ট বলে মনে হচ্ছে। আমি সবসময় jQuery তুচ্ছ করেছি এবং এটি কখনও ব্যবহার করি নি বা এর জন্য কোন জোরালো প্রয়োজনীয়তা অনুভব করি না। কেউ কেউ একে একে নিজের মতো করে এটি ব্যবহার করে উপভোগ করেন। উভয় কৌশল ব্যবহার করে উত্তর কিছুই ক্ষতি করে না। তবে যেহেতু প্রশ্নটি jQuery সমাধানগুলি গ্রহণ করবে, একটি jQuery ট্যাগ আরও চক্ষুদান এবং আশা করি আরও ভাল উত্তর পেতে পারে। এখানে jQuery উত্তরগুলি অপ্রয়োজনীয় বলে মনে হচ্ছে।

উত্তর:


159

কোনও 'jQuery' যাদু নেই, কেবল জাভাস্ক্রিপ্ট টাইমার রয়েছে।

var pressTimer;

$("a").mouseup(function(){
  clearTimeout(pressTimer);
  // Clear timeout
  return false;
}).mousedown(function(){
  // Set timeout
  pressTimer = window.setTimeout(function() { ... Your Code ...},1000);
  return false; 
});

39
এই আগুনটিও কি টেনে আনবে?
গালাল

11
@ গাল্লাল সম্ভবতঃ আমি যদি কিছু মিস করি না তবে ফোন clearTimeout(pressTimer)করে এটি দেখতে মোটামুটি সহজ হবে mousemove। যা স্বীকার করা খুব কমই নজিরবিহীন হবে।
ডেভিড জন ওয়েলশ

5
@ ডেভিড জোহান ওয়েলশ আমি যা দেখছিলাম, আপনি কেবল মাউস সরানো চাইবেন না - আপনাকে স্থির আঙুলটি স্থির করে রাখা এবং 1px না সরানো বেশ শক্ত! আপনাকে একটি থ্রেশহোল্ড প্রয়োগ করতে হবে (যদি মাউস 10px সরানো না থাকে) ইত্যাদি খুব দ্রুত জটিল হয়ে যায়!
আয়ান

6
মনে রাখবেন যে আপনি যদি ফোনে এটি কাজ করার আশা করে থাকেন তবে তাদের প্রায়শই তাদের নিজস্ব ডিফল্ট লম্বপ্রেস আচরণ থাকে (উদাহরণস্বরূপ, আপনি দীর্ঘসূত্র কোনও লিঙ্ক চাপলে বিভিন্ন বিকল্পের সাথে একটি মডেল মেনু দেখায়)। এটি প্রতিরোধ করার মতো ভাগ্য আমার খুব বেশি ছিল না, এবং ব্রাউজারের ডিফল্ট আচরণে সৎ হস্তক্ষেপ করা কোনওভাবেই কোনও বিষয় গোপন করা নয়।
ডার্টাকাস

4
যদিও এটি নির্বাচিত উত্তর, এটি আসলে প্রশ্নের উত্তর দিচ্ছে না। এটি অত্যধিক সরল এবং নিষ্পাপ। যে কোনও দীর্ঘ প্রেস ইভেন্টের অবশ্যই একাধিক সমস্যা সমাধান করা উচিত যা এই উত্তরটি উপেক্ষা করে। 1) মাল্টি টাচ থেকে অঙ্গভঙ্গি থেকে টানুন থেকে দীর্ঘ প্রেসের পার্থক্য করুন (অর্থাত্ চিমটি জুম ইন বা আউট) 2) উপাদান বা ব্রাউজারের ক্ষেত্রের বাইরে চলাচল বাতিল করুন 3) উল্লেখযোগ্য সংখ্যক প্ল্যাটফর্ম এবং ডিভাইসে পাঠ্য নির্বাচনের ডিফল্ট আচরণ 4) মঞ্জুর করুন সংবেদনশীলতার জন্য একটি কনফিগারযোগ্য থ্রেশহোল্ড এবং যাদু সংখ্যার উপর নির্ভর করে না। অ্যাক্সেসিবিলিটি উদ্বেগের জন্য - তবে একচেটিয়া নয় - বিশেষত সহায়ক।

34

মায়কো মৌরার উত্তরের ভিত্তিতে আমি এটি লিখেছিলাম। এটিও নিশ্চিত করে যে ব্যবহারকারী কোনও ডান ক্লিক করেনি, যা একটি দীর্ঘ প্রেস ট্রিগার করবে এবং মোবাইল ডিভাইসে কাজ করবে। ডেমো

var node = document.getElementsByTagName("p")[0];
var longpress = false;
var presstimer = null;
var longtarget = null;

var cancel = function(e) {
    if (presstimer !== null) {
        clearTimeout(presstimer);
        presstimer = null;
    }

    this.classList.remove("longpress");
};

var click = function(e) {
    if (presstimer !== null) {
        clearTimeout(presstimer);
        presstimer = null;
    }

    this.classList.remove("longpress");

    if (longpress) {
        return false;
    }

    alert("press");
};

var start = function(e) {
    console.log(e);

    if (e.type === "click" && e.button !== 0) {
        return;
    }

    longpress = false;

    this.classList.add("longpress");

    if (presstimer === null) {
        presstimer = setTimeout(function() {
            alert("long click");
            longpress = true;
        }, 1000);
    }

    return false;
};

node.addEventListener("mousedown", start);
node.addEventListener("touchstart", start);
node.addEventListener("click", click);
node.addEventListener("mouseout", cancel);
node.addEventListener("touchend", cancel);
node.addEventListener("touchleave", cancel);
node.addEventListener("touchcancel", cancel);

আপনার সিএসএস অ্যানিমেশন ব্যবহার করে কিছু সূচক অন্তর্ভুক্ত করা উচিত:

p {
    background: red;
    padding: 100px;
}

.longpress {
    -webkit-animation: 1s longpress;
            animation: 1s longpress;
}

@-webkit-keyframes longpress {
    0%, 20% { background: red; }
    100% { background: yellow; }
}

@keyframes longpress {
    0%, 20% { background: red; }
    100% { background: yellow; }
}

আমি এই পরিমার্জিত সংস্করণ তৈরী ক্রমাগত যখন বোতামটি চেপে অনুষ্ঠিত হয় কিছু করতে jsfiddle কিন্তু Android এর উপর কোনো কারণে এটি সঞ্চালিত হয় পরেও আপনি + বোতাম স্পর্শ বন্ধ ...
Xander

@ এক্সান্দার: কারণ :hoverস্পর্শ ডিভাইসে রাজ্যটি আঠালো, সম্ভবত এটি এখানেও প্রযোজ্য।
কেলুনিক

ডাং, আমি আশ্চর্য হই যে কোনও মোবাইল সাইটে লম্বা টিপস সমর্থন করে এমন কোনও সাইটে / / নম্বর বর্ধিত বোতামগুলি পাওয়ার কোনও উপায় আছে কিনা। আমি যে পদ্ধতিটি পাই তা কেবল বার বার ক্লিক করা সমর্থন করে যা বিপুল সংখ্যক ব্যথার। ধন্যবাদ যদিও!
Xender

@ এক্সান্দার: আসলে, আইএমওকে বরখাস্ত করা touchendউচিত, যখন এটি স্পর্শ ডিভাইসের জন্য বিশেষ কোড হয় তখন এটি স্টিকি করার কোনও কারণ নেই, সম্ভবত আমি আগামীকাল কিছু চেষ্টা করব।
কেলুনিক

1
অ্যান্ড্রয়েডে সমস্যাটি বের করা হয়েছে। উভয়ই মোসডাউন এবং টাচস্টার্ট টিপতে টিপুন যাতে এটিতে 2 টি টাইমার চলছিল তবে আঙুলটি তুলে দিয়ে কেবল 1 বাতিল করা হচ্ছে। ইতিমধ্যে টাইমারটি সক্রিয় ছিল না তা নিশ্চিত করার জন্য (প্রেসটিমার === নাল) দিয়ে মোড়ানো প্রেসটিমার।
Xender

25

আপনি jQuery মোবাইল এপিআই এর ট্যাপহোল্ড ইভেন্টটি ব্যবহার করতে পারেন ।

jQuery("a").on("taphold", function( event ) { ... } )

2
দয়া করে নোট করুন: jquery ui সঙ্গে jquery মোবাইল দ্বন্দ্ব। এছাড়াও দেখুন
স্ট্যাকওভারফ্লো.com/ সেকশনস /

16

এটি সমাধানের জন্য আমি দীর্ঘ-প্রেস-ইভেন্ট (0.5k খাঁটি জাভাস্ক্রিপ্ট) তৈরি করেছি, এটি ডিওমে একটি long-pressইভেন্ট যুক্ত করে।

একটি শুনুন long-pressউপর কোন উপাদান:

// the event bubbles, so you can listen at the root level
document.addEventListener('long-press', function(e) {
  console.log(e.target);
});

long-pressএকটি নির্দিষ্ট উপাদান জন্য একটি শুনতে :

// get the element
var el = document.getElementById('idOfElement');

// add a long-press event listener
el.addEventListener('long-press', function(e) {

    // stop the event from bubbling up
    e.preventDefault()

    console.log(e.target);
});

আইই 9 +, ক্রোম, ফায়ারফক্স, সাফারি এবং হাইব্রিড মোবাইল অ্যাপ্লিকেশনগুলিতে কাজ করে (আইওএস / অ্যান্ড্রয়েডে কর্ডোভা এবং আয়নিক)

ডেমো


2
দুর্দান্ত, সাথী !!
জেফ টি।

1
এই সমাধান বানরটি উইন্ডোটিকে প্যাচ করে ust এটি কেবল পঠনযোগ্য হিসাবে কেবল পঠনযোগ্য বৈশিষ্ট্যগুলি তৈরি করে না বরং কেবল পঠনযোগ্য লেখায়। এটি বিশেষত রিটার্নভ্যালু, টাইপ, টাইমস্ট্যাম্প এবং আইস ট্রাস্ট বিশ্বাস হারিয়েছে। এটি ড্র্যাগ, অঙ্গভঙ্গি, চিম্টি জুম ইন বা আউট বা দীর্ঘ প্রেসের মাল্টি-টাচ মিসফায়ারগুলিকে সম্বোধন করে না, বা এটি বৃহত সংখ্যক ডিভাইস এবং / অথবা প্ল্যাটফর্মগুলির বিষয়টিও সম্বোধন করে না যা 500 মিমি এমনকি টেক্সট নির্বাচনের জন্য ডিফল্টভাবে দীর্ঘ চাপ দেয়। এই শর্তগুলির জন্য গ্রন্থাগারটি কোনও এবং সমস্ত পরীক্ষার কেস হারিয়েছে।

4
এটি ওপেন সোর্স, এই প্রকল্পে অবদান রাখতে নির্দ্বিধায় :)
জন দোহার্টি

পছন্দ করুন কিন্তু আমরা কি একই উপাদান দিয়ে এখনও "অনক্লিক" ব্যবহার করতে পারি?
দেবাশীষ

2
আপনার এখনও "অন্লিক" ইভেন্টটি পাওয়া উচিত যতক্ষণ না 'দীর্ঘ-প্রেস-বিলম্ব' টাইমার কিক করার আগে লং প্রেস প্রকাশিত হয়
জন দোহার্টি

15

সময়সীমা এবং কয়েকটা মাউস ইভেন্ট হ্যান্ডলারের সাহায্যে এটি আপনার নিজের মতো করে বাস্তবায়নের পক্ষে যথেষ্ট সহজ দেখাচ্ছে, আপনি যখন ক্লিক-ড্রাগ-রিলিজের মতো মামলাগুলি বিবেচনা করছেন, একই উপাদানটিতে প্রেস এবং লং-প্রেস উভয়কে সমর্থন করছেন, তখন এটি আরও জটিল হয়ে উঠবে , এবং আইপ্যাডের মতো স্পর্শ ডিভাইসের সাথে কাজ করা। আমি ব্যবহার শেষ পর্যন্ত longclick jQuery এর প্লাগ-ইন ( গিটহাব ), যা আমার জন্য এটা কাপড় যত্ন নেয়। আপনার যদি কেবল মোবাইল ফোনের মতো টাচস্ক্রিন ডিভাইসগুলি সমর্থন করার দরকার হয় তবে আপনি jQuery মোবাইল টেপহোল্ড ইভেন্টটিও চেষ্টা করতে পারেন ।


গিথুব লিঙ্কটি কাজ করে, তবে প্রকল্পটি ২০১০ সাল থেকে আপডেট হয়নি এবং বর্তমান জেকুরি সংস্করণগুলির সাথে কাজ করে না। যাইহোক, হ্যান্ডেলকে প্রয়োগ করুন disp অ্যাপ্লিকেশনটি সোর্স কোডে প্রেরণ করুন ly অ্যাপ্লিকেশন দিয়ে এটি ঠিক করে।
arlomedia

11

jQuery প্লাগইন। শুধু রাখি $(expression).longClick(function() { <your code here> });। দ্বিতীয় প্যারামিটার হোল্ড সময়কাল হয়; ডিফল্ট সময়সীমা 500 এমএস।

(function($) {
    $.fn.longClick = function(callback, timeout) {
        var timer;
        timeout = timeout || 500;
        $(this).mousedown(function() {
            timer = setTimeout(function() { callback(); }, timeout);
            return false;
        });
        $(document).mouseup(function() {
            clearTimeout(timer);
            return false;
        });
    };

})(jQuery);

এটি কল ধরে রাখা হয় না।
চ্যাম্পে

হাই ব্রো আমরা এটি একটি মেরুদন্ডের ইভেন্ট হিসাবে ব্যবহার করতে পারি
ব্যবহারকারী 2075328

6

ক্রস প্ল্যাটফর্ম বিকাশকারীদের জন্য (দ্রষ্টব্য এ পর্যন্ত দেওয়া সমস্ত উত্তর আইওএসে কাজ করবে না) :

মাউসআপ / ডাউনটি অ্যান্ড্রয়েডে ঠিক আছে বলে মনে হয়েছে - তবে সমস্ত ডিভাইস নয় (স্যামসং ট্যাব 4)। আইওএসে মোটেই কাজ করেননি ।

আরও গবেষণায় মনে হয় এটির উপাদান নির্বাচন করার কারণে এবং দেশীয় ম্যাগনিফিকেশন শ্রোতাকে বিরত রাখে।

এই ইভেন্ট শ্রোতা যদি বুটস্ট্র্যাপ মডেলটিতে ব্যবহারকারী থাম্বনেল চিত্রটি খোলার সক্ষম করে, যদি ব্যবহারকারী ছবিটি 500 মিমি ধরে রাখেন।

এটি প্রতিক্রিয়াশীল চিত্র শ্রেণীর ব্যবহার করে তাই চিত্রটির বৃহত সংস্করণ দেখায়। এই কোডের টুকরোটি পুরোপুরি পরীক্ষা করা হয়েছে (আইপ্যাড / ট্যাব 4 / ট্যাবএ / গ্যালাক্সি 4):

var pressTimer;  
$(".thumbnail").on('touchend', function (e) {
   clearTimeout(pressTimer);
}).on('touchstart', function (e) {
   var target = $(e.currentTarget);
   var imagePath = target.find('img').attr('src');
   var title = target.find('.myCaption:visible').first().text();
   $('#dds-modal-title').text(title);
   $('#dds-modal-img').attr('src', imagePath);
   // Set timeout
   pressTimer = window.setTimeout(function () {
      $('#dds-modal').modal('show');
   }, 500)
});

আইওএসের জন্য দুর্দান্ত সমাধান
এরিক xu

থাম্বনেইলে শুরু হওয়া স্পর্শগুলিকে আমি কীভাবে আটকাব, তবে বলি শেষ পর্যন্ত একটি স্ক্রোল হয়ে উঠছে। অন্য কথায়, জায়গায় কোনও টাচ স্টার্ট / শেষ নয়, তবে একটি স্পর্শ যা হ্যান্ডলারের সাহায্যে উপাদানটিতে শুরু হয়েছিল, তবে একটি স্ক্রোল হিসাবে শেষ হয়
আকিন হওয়ান

5
$(document).ready(function () {
    var longpress = false;

    $("button").on('click', function () {
        (longpress) ? alert("Long Press") : alert("Short Press");
    });

    var startTime, endTime;
    $("button").on('mousedown', function () {
        startTime = new Date().getTime();
    });

    $("button").on('mouseup', function () {
        endTime = new Date().getTime();
        longpress = (endTime - startTime < 500) ? false : true;
    });
});

ডেমো


2
এই কোডটি হিট করে লম্বিক্লিকটি 500 মিমি শেষে নিক্ষেপ করা হয় না। ব্যবহারকারী মাউস ক্লিক করে মারা যেতে পারে :)। ব্যবহারকারী বাটনে ক্লিক করতে থামিয়ে দিলে লম্বা ক্লিকটি বরখাস্ত করা হয়।
jedi

যখন কোনও ব্যবহারকারী একই জায়গায় তাদের লম্বপ্রেস শেষ না করে স্ক্রোলিং শুরু করে তখন কি এই কেসটি কভার করবে?
আকিন হুয়ান

@ আকিনহওয়ান না মাউস ক্লিকটি একই উপাদানটির উপর প্রকাশ করা হলে কেবল এটিই ট্রিগার হতে পারে।
রাজ্জ

4

ডায়োডিয়াসের উত্তরটি দুর্দান্ত but এবং রাজ্জাকের উত্তরটি প্রায় নিখুঁত, তবে এটি কেবল মাউসআপে হোল্ড ফাংশনটি চালায় এবং সাধারণভাবে, ব্যবহারকারীটি ধরে রাখলে এমনকি ফাংশনটি চলে।

সুতরাং, আমি দুজনেই যোগ দিয়েছি এবং এটি তৈরি করেছি:

$(element).on('click', function () {
    if(longpress) { // if detect hold, stop onclick function
        return false;
    };
});

$(element).on('mousedown', function () {
    longpress = false; //longpress is false initially
    pressTimer = window.setTimeout(function(){
    // your code here

    longpress = true; //if run hold function, longpress is true
    },1000)
});

$(element).on('mouseup', function () {
    clearTimeout(pressTimer); //clear time on mouseup
});

ব্যবহারকারী যদি মোসডাউন করার পরে স্ক্রোলিং শুরু করে এবং লম্বপ্রেস করার ইচ্ছা রাখে না
আকিন হওয়ান


2

আপনি মাউসের নিচে উপাদানটির সময়সীমা নির্ধারণ করতে এবং মাউস আপ এ এটি সাফ করতে পারেন:

$("a").mousedown(function() {
    // set timeout for this element
    var timeout = window.setTimeout(function() { /* … */ }, 1234);
    $(this).mouseup(function() {
        // clear timeout for this element
        window.clearTimeout(timeout);
        // reset mouse up event handler
        $(this).unbind("mouseup");
        return false;
    });
    return false;
});

এটির সাথে প্রতিটি উপাদান নিজস্ব সময়সীমা পায়।


1
$(this).mouseup(function(){});ইভেন্ট হ্যান্ডলারটি সরিয়ে দেয় না, এটি আরও একটি যুক্ত করে। .unbindপরিবর্তে ব্যবহার করুন।
মট্টি ভির্ককুনেন

off()আনবাইন্ডের পরিবর্তে এখন ব্যবহার করা উচিত ।
dbinott

1

আপনি jquery- মোবাইলের ট্যাপহোল্ড ব্যবহার করতে পারেন। Jquery-mobile.js অন্তর্ভুক্ত করুন এবং নিম্নলিখিত কোডটি সূক্ষ্মভাবে কাজ করবে

$(document).on("pagecreate","#pagename",function(){
  $("p").on("taphold",function(){
   $(this).hide(); //your code
  });    
});

এটি গ্রহণযোগ্য উত্তর হওয়া উচিত যেহেতু
jquery- মোবাইলটি

1

সর্বাধিক মার্জিত এবং পরিষ্কার একটি jQuery প্লাগইন: https://github.com/untill/jquery.longclick/ , প্যাকাক হিসাবেও উপলব্ধ: https://www.npmjs.com/package/jquery.longclick

সংক্ষেপে, আপনি এটি এর মতো ব্যবহার করুন:

$( 'button').mayTriggerLongClicks().on( 'longClick', function() { your code here } );

এই প্লাগইনটির সুবিধাটি হ'ল এখানে অন্যান্য উত্তরগুলির বিপরীতে, ক্লিক ইভেন্টগুলি এখনও সম্ভব। এও নোট করুন যে মাউসআপের আগে কোনও ডিভাইসে লম্বা আলতো চাপের মতোই দীর্ঘ ক্লিক হয়। সুতরাং, এটি একটি বৈশিষ্ট্য।


0

আমার জন্য এটি সেই কোডটি নিয়ে কাজ করেছে (jQuery সহ):

var int       = null,
    fired     = false;

var longclickFilm = function($t) {
        $body.css('background', 'red');
    },
    clickFilm = function($t) {
        $t  = $t.clone(false, false);
        var $to = $('footer > div:first');
        $to.find('.empty').remove();
        $t.appendTo($to);
    },
    touchStartFilm = function(event) {
        event.preventDefault();
        fired     = false;
        int       = setTimeout(function($t) {
            longclickFilm($t);
            fired = true;
        }, 2000, $(this)); // 2 sec for long click ?
        return false;
    },
    touchEndFilm = function(event) {
        event.preventDefault();
        clearTimeout(int);
        if (fired) return false;
        else  clickFilm($(this));
        return false;
    };

$('ul#thelist .thumbBox')
    .live('mousedown touchstart', touchStartFilm)
    .live('mouseup touchend touchcancel', touchEndFilm);

0

ক্লিক বা লং প্রেস শনাক্ত করার জন্য আপনি সময়টি পরীক্ষা করতে পারেন [jQuery]

function AddButtonEventListener() {
try {
    var mousedowntime;
    var presstime;
    $("button[id$='" + buttonID + "']").mousedown(function() {
        var d = new Date();
        mousedowntime = d.getTime();
    });
    $("button[id$='" + buttonID + "']").mouseup(function() {
        var d = new Date();
        presstime = d.getTime() - mousedowntime;
        if (presstime > 999/*You can decide the time*/) {
            //Do_Action_Long_Press_Event();
        }
        else {
            //Do_Action_Click_Event();
        }
    });
}
catch (err) {
    alert(err.message);
}
} 


0

আপনি jqueryটাচ ইভেন্টগুলি ব্যবহার করতে পারেন । ( এখানে দেখুন )

  let holdBtn = $('#holdBtn')
  let holdDuration = 1000
  let holdTimer

  holdBtn.on('touchend', function () {
    // finish hold
  });
  holdBtn.on('touchstart', function () {
    // start hold
    holdTimer = setTimeout(function() {
      //action after certain time of hold
    }, holdDuration );
  });

0

লংপ্রেস কীবোর্ড ইভেন্টগুলির জন্য আমার কিছু দরকার ছিল, তাই আমি এটি লিখেছিলাম।

var longpressKeys = [13];
var longpressTimeout = 1500;
var longpressActive = false;
var longpressFunc = null;

document.addEventListener('keydown', function(e) {
    if (longpressFunc == null && longpressKeys.indexOf(e.keyCode) > -1) {
        longpressFunc = setTimeout(function() {
            console.log('longpress triggered');
            longpressActive = true;
        }, longpressTimeout);

    // any key not defined as a longpress
    } else if (longpressKeys.indexOf(e.keyCode) == -1) {
        console.log('shortpress triggered');
    }
});

document.addEventListener('keyup', function(e) {
    clearTimeout(longpressFunc);
    longpressFunc = null;

    // longpress key triggered as a shortpress
    if (!longpressActive && longpressKeys.indexOf(e.keyCode) > -1) {
        console.log('shortpress triggered');
    }
    longpressActive = false;
});

0

আমি মনে করি এটি আপনাকে সহায়তা করতে পারে:

var image_save_msg = 'You Can Not Save images!';
var no_menu_msg = 'Context Menu disabled!';
var smessage = "Content is protected !!";

function disableEnterKey(e) {
    if (e.ctrlKey) {
        var key;
        if (window.event)
            key = window.event.keyCode; //IE
        else
            key = e.which; //firefox (97)
        //if (key != 17) alert(key);
        if (key == 97 || key == 65 || key == 67 || key == 99 || key == 88 || key == 120 || key == 26 || key == 85 || key == 86 || key == 83 || key == 43) {
            show_wpcp_message('You are not allowed to copy content or view source');
            return false;
        } else
            return true;
    }
}

function disable_copy(e) {
    var elemtype = e.target.nodeName;
    var isSafari = /Safari/.test(navigator.userAgent) && /Apple Computer/.test(navigator.vendor);
    elemtype = elemtype.toUpperCase();
    var checker_IMG = '';
    if (elemtype == "IMG" && checker_IMG == 'checked' && e.detail >= 2) {
        show_wpcp_message(alertMsg_IMG);
        return false;
    }
    if (elemtype != "TEXT" && elemtype != "TEXTAREA" && elemtype != "INPUT" && elemtype != "PASSWORD" && elemtype != "SELECT" && elemtype != "OPTION" && elemtype != "EMBED") {
        if (smessage !== "" && e.detail == 2)
            show_wpcp_message(smessage);

        if (isSafari)
            return true;
        else
            return false;
    }
}

function disable_copy_ie() {
    var elemtype = window.event.srcElement.nodeName;
    elemtype = elemtype.toUpperCase();
    if (elemtype == "IMG") {
        show_wpcp_message(alertMsg_IMG);
        return false;
    }
    if (elemtype != "TEXT" && elemtype != "TEXTAREA" && elemtype != "INPUT" && elemtype != "PASSWORD" && elemtype != "SELECT" && elemtype != "OPTION" && elemtype != "EMBED") {
        //alert(navigator.userAgent.indexOf('MSIE'));
        //if (smessage !== "") show_wpcp_message(smessage);
        return false;
    }
}

function reEnable() {
    return true;
}
document.onkeydown = disableEnterKey;
document.onselectstart = disable_copy_ie;
if (navigator.userAgent.indexOf('MSIE') == -1) {
    document.onmousedown = disable_copy;
    document.onclick = reEnable;
}

function disableSelection(target) {
    //For IE This code will work
    if (typeof target.onselectstart != "undefined")
        target.onselectstart = disable_copy_ie;

    //For Firefox This code will work
    else if (typeof target.style.MozUserSelect != "undefined") {
        target.style.MozUserSelect = "none";
    }

    //All other  (ie: Opera) This code will work
    else
        target.onmousedown = function() {
            return false
        }
    target.style.cursor = "default";
}
// on_body_load

window.onload = function() {
    disableSelection(document.body);
};



// disable_Right_Click



document.ondragstart = function() {
    return false;
}

function nocontext(e) {
    return false;
}
document.oncontextmenu = nocontext;

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.