ลองกดใน JavaScript?


117

เป็นไปได้ไหมที่จะใช้ "long press" ใน JavaScript (หรือ jQuery) อย่างไร?

ข้อความแสดงแทน
(ที่มา: androinica.com )

HTML

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

JavaScript

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

7
ฉันอาจจะสร้างเหตุการณ์ jQuery ที่กำหนดเองโดยใช้รหัสของคุณเป็นฐานดังนั้นคุณสามารถทำได้jQuery(...).longclick(function() { ... });
Matti Virkkunen

1
คำถามไม่ได้ติดแท็ก jQuery แม้ว่าควรจะเป็นก็ตาม คำถามจะถามก่อนสำหรับโซลูชัน Javascript ที่แท้จริงซึ่งฉันชอบหรือไม่ก็ได้ (ในวงเล็บ) ซึ่งเป็นโซลูชัน jQuery คำตอบส่วนใหญ่ดูเหมือนจะเป็นค่าเริ่มต้นของ jQuery เป็นสมมติฐานมาตรฐาน ฉันดูถูก jQuery มาโดยตลอดและไม่เคยใช้มันเลยสักครั้งและไม่รู้สึกถึงความต้องการที่น่าสนใจสำหรับมัน บางคนสนุกกับการใช้งานซึ่งเป็นเรื่องปกติสำหรับแต่ละคน คำตอบโดยใช้เทคนิคอย่างใดอย่างหนึ่งไม่เจ็บอะไรเลย แต่เนื่องจากคำถามจะยอมรับโซลูชัน jQuery แท็ก jQuery อาจดึงดูดสายตามากขึ้นและหวังว่าจะได้คำตอบที่ดีกว่า คำตอบของ jQuery ที่นี่ดูเหมือนจะขาดความดแจ่มใส

คำตอบ:


159

ไม่มีเวทมนตร์ 'jQuery' มีเพียงตัวจับเวลา JavaScript

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
นี่จะไม่ยิงด้วยการลากด้วยหรือ?
Gallal

11
@Gallal สันนิษฐานว่ามันจะค่อนข้างง่ายที่จะเห็นว่าโดยการโทรclearTimeout(pressTimer)บนmousemoveเว้นแต่ฉันหายไปบางสิ่งบางอย่าง ซึ่งยอมรับว่าแทบจะไม่เคยเกิดขึ้นมาก่อน
David John Welsh

5
@DavidJohnWelsh สิ่งที่ฉันกำลังดูอยู่คุณไม่เพียงแค่ต้องการเลื่อนเมาส์เท่านั้น - การจับนิ้วของคุณให้นิ่งและไม่ขยับ 1px นั้นค่อนข้างยาก! คุณต้องใช้ธรณีประตู (ถ้าเมาส์ยังไม่ขยับ 10px) ฯลฯ ซับซ้อนได้อย่างรวดเร็ว!
เอียน

6
โปรดทราบว่าหากคุณคาดหวังว่าสิ่งนี้จะใช้งานได้กับโทรศัพท์พวกเขามักจะมีพฤติกรรมการกดเริ่มต้นของตัวเอง (เช่น chrome บน Android จะแสดงเมนูโมดอลพร้อมตัวเลือกต่างๆเมื่อคุณกดลิงก์ค้างไว้) ฉันไม่ได้โชคดีมากที่ได้ป้องกันสิ่งนี้และการที่จะเข้าไปยุ่งเกี่ยวกับพฤติกรรมเริ่มต้นของเบราว์เซอร์ก็เป็นการซ่อนเร้น
dartacus

4
แม้ว่านี่จะเป็นคำตอบที่เลือก แต่ก็ไม่ได้ตอบคำถามจริงๆ เป็นเรื่องง่ายและไร้เดียงสามากเกินไป เหตุการณ์กดยาวใด ๆ จะต้องแก้ไขปัญหาหลายประการซึ่งคำตอบนี้เพิกเฉย 1) แยกความแตกต่างของการกดแบบยาวจากการลากจากท่าทางสัมผัสจากมัลติทัช (เช่นการบีบนิ้วเข้าหรือออก) 2) ยกเลิกหากมีการเคลื่อนไหวนอกองค์ประกอบหรือพื้นที่เบราว์เซอร์ 3) ระบุพฤติกรรมเริ่มต้นของการเลือกข้อความบนแพลตฟอร์มและอุปกรณ์จำนวนมาก 4) อนุญาต เกณฑ์ที่กำหนดได้สำหรับความไวและไม่ต้องพึ่งพาตัวเลขวิเศษ มีประโยชน์อย่างยิ่งสำหรับข้อกังวลด้านการช่วยการเข้าถึง

34

จากคำตอบของ Maycow Moura ฉันเขียนสิ่งนี้ นอกจากนี้ยังช่วยให้มั่นใจได้ว่าผู้ใช้ไม่ได้ทำการคลิกขวาซึ่งจะทำให้เกิดการกดแบบยาวและทำงานบนอุปกรณ์เคลื่อนที่ การสาธิต

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);

คุณควรรวมตัวบ่งชี้บางอย่างโดยใช้ภาพเคลื่อนไหว CSS:

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

@ Xander: อาจเป็นเพราะ:hoverสถานะเหนียวบนอุปกรณ์สัมผัสอาจใช้ที่นี่ด้วย
kelunik

แดงฉันสงสัยว่ามีวิธีใดบ้างในการรับ - / + ปุ่มเพิ่มจำนวนที่ทำงานบนไซต์มือถือที่รองรับการกดแบบยาว ทุกวิธีที่ฉันพบรองรับเพียงการคลิกซ้ำ ๆ ซึ่งเป็นความเจ็บปวดสำหรับตัวเลขจำนวนมาก ขอบคุณมาก!
Xander

@ Xander: ที่จริงแล้วtouchendควรเริ่มการทำงานของ IMO ไม่มีเหตุผลที่จะทำให้มันเหนียวเมื่อเป็นรหัสพิเศษสำหรับอุปกรณ์สัมผัสบางทีฉันอาจจะลองอะไรสักอย่างในวันพรุ่งนี้
kelunik

1
พบปัญหาใน Android การกดยิงทั้งการเลื่อนลงและการแตะเพื่อให้มี 2 ตัวจับเวลาทำงาน แต่มีเพียง 1 ตัวเท่านั้นที่ถูกยกเลิกโดยการยกนิ้วของคุณ ตัวตั้งเวลาล่วงหน้าที่ห่อด้วย if (presstimer === null) เพื่อให้แน่ใจว่าตัวจับเวลาไม่ได้ทำงานอยู่แล้ว
Xander


16

ฉันสร้างlong-press-event (0.5k JavaScript บริสุทธิ์)เพื่อแก้ปัญหานี้มันเพิ่มlong-pressเหตุการณ์ให้กับ DOM

ฟังสำหรับ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);
});

ทำงานใน IE9 +, Chrome, Firefox, Safari และแอพมือถือแบบไฮบริด (Cordova & Ionic บน iOS / Android)

การสาธิต


2
โอ๊ยยยเพื่อน !!
Jeff T.

1
ลิงแก้ปัญหานี้แก้ไขหน้าต่างวัตถุ CustomEvent ในลักษณะค่อนข้างจับจดไม่สมบูรณ์และไม่ได้มาตรฐาน มันไม่ได้สร้างคุณสมบัติอ่านอย่างเดียวอย่างถูกต้องเป็นอ่านอย่างเดียว แต่เป็นการอ่านเขียน โดยเฉพาะไม่มี returnValue ประเภท timeStamp และ isTrusted มันไม่ได้กล่าวถึงการลากท่าทางการย่อ / ขยายหรือการกดแบบมัลติทัชที่ผิดพลาดและไม่ได้แก้ไขปัญหาของอุปกรณ์และ / หรือแพลตฟอร์มจำนวนมากซึ่งเป็นค่าเริ่มต้นในการกดแบบยาวเพื่อเลือกข้อความแม้ที่ 500 มิลลิวินาที ไลบรารีไม่มีกรณีทดสอบใด ๆ และทั้งหมดสำหรับเงื่อนไขเหล่านี้

4
เป็นโอเพ่นซอร์ส
John Doherty

@JohnDoherty เยี่ยมมาก! แต่เรายังใช้ "onClick" กับองค์ประกอบเดียวกันได้หรือไม่
Devashish

2
คุณควรจะยังคงได้รับเหตุการณ์ 'onclick' ตราบเท่าที่มีการปล่อยข่าวแบบยาวก่อนที่ตัวจับเวลา "การกดหน่วงเวลานาน" จะเริ่มขึ้น
John Doherty

15

แม้ว่ามันจะดูง่ายพอที่จะใช้งานได้ด้วยตัวคุณเองด้วยการหมดเวลาและตัวจัดการเหตุการณ์ของเมาส์สองตัว แต่ก็มีความซับซ้อนขึ้นเล็กน้อยเมื่อคุณพิจารณากรณีต่างๆเช่นการคลิกลากปล่อยซึ่งรองรับทั้งการกดและการกดแบบยาวในองค์ประกอบเดียวกัน และทำงานร่วมกับอุปกรณ์ระบบสัมผัสเช่น iPad ฉันลงเอยด้วยการใช้ปลั๊กอิน longclick jQuery ( Github ) ซึ่งดูแลสิ่งนั้นให้ฉัน หากคุณต้องการการสนับสนุนอุปกรณ์หน้าจอสัมผัสเช่นโทรศัพท์มือถือเท่านั้นคุณอาจลองเหตุการณ์ taphold มือถือ jQuery


ลิงก์ Github ใช้งานได้ แต่โครงการไม่ได้รับการอัปเดตตั้งแต่ปี 2010 และใช้ไม่ได้กับ jquery เวอร์ชันปัจจุบัน อย่างไรก็ตามการแทนที่ handle.apply ด้วย dispatch.apply ในซอร์สโค้ดจะช่วยแก้ไขได้
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);

สิ่งนี้จะไม่ถูกเก็บไว้ในการโทร
แชมป์

สวัสดีพี่ชายเราใช้เป็นเหตุการณ์กระดูกสันหลังได้
ไหม

6

สำหรับนักพัฒนาข้ามแพลตฟอร์ม(หมายเหตุคำตอบทั้งหมดที่ให้มาจะใช้ไม่ได้บน iOS) :

การเลื่อนเมาส์ขึ้น / ลงดูเหมือนจะใช้งานได้ดี Android - แต่ไม่ใช่ทุกอุปกรณ์เช่น (samsung tab4) ไม่ได้ทำงานที่ทั้งหมดในiOS

การวิจัยเพิ่มเติมดูเหมือนว่านี่เป็นเพราะองค์ประกอบที่มีการเลือกและการขยายแบบเนทีฟรบกวนผู้ฟัง

ตัวฟังเหตุการณ์นี้ช่วยให้สามารถเปิดภาพขนาดย่อในโมดอล bootstrap ได้หากผู้ใช้ถือรูปภาพเป็นเวลา 500 มิลลิวินาที

ใช้คลาสรูปภาพที่ตอบสนองดังนั้นจึงแสดงภาพขนาดใหญ่ขึ้น โค้ดชิ้นนี้ได้รับการทดสอบอย่างสมบูรณ์บน (iPad / Tab4 / TabA / Galaxy4):

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)
});

ทางออกที่ดีสำหรับ iOS
eric xu

ฉันจะป้องกันไม่ให้สัมผัสที่เริ่มต้นบนภาพขนาดย่อได้อย่างไร แต่บอกว่ากลายเป็นเลื่อน กล่าวอีกนัยหนึ่งไม่ใช่สัมผัสเริ่มต้น / สิ้นสุดในสถานที่ แต่เป็นสัมผัสที่เริ่มต้นในองค์ประกอบด้วยตัวจัดการ แต่จบลงด้วยการเลื่อน
Akin Hwan

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

สิ่งนี้จะครอบคลุมกรณีที่ผู้ใช้เริ่มเลื่อนแทนที่จะจบ longpress ในจุดเดียวกันหรือไม่
Akin Hwan

@AkinHwan ไม่จะทริกเกอร์ก็ต่อเมื่อปล่อยการคลิกเมาส์เหนือองค์ประกอบเดียวกัน
razz

4

คำตอบของ Diodeus นั้นยอดเยี่ยม แต่มันป้องกันไม่ให้คุณเพิ่มฟังก์ชัน onClick มันจะไม่เรียกใช้ฟังก์ชัน Hold หากคุณใส่ onclick และคำตอบของ Razzak นั้นเกือบจะสมบูรณ์แบบ แต่มันจะเรียกใช้ฟังก์ชัน Hold เฉพาะเมื่อวางเมาส์และโดยทั่วไปฟังก์ชันจะทำงานแม้ว่าผู้ใช้จะกดค้างไว้ก็ตาม

ดังนั้นฉันจึงเข้าร่วมทั้งสองและทำสิ่งนี้:

$(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
});

จะเกิดอะไรขึ้นถ้าผู้ใช้เริ่มเลื่อนหลังจาก
Akin Hwan


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แทน
Matti Virkkunen

ควรใช้off()ตอนนี้แทนการเลิกผูก
dbinott

1

คุณสามารถใช้ taphold ของ jquery-mobile รวม jquery-mobile.js และโค้ดต่อไปนี้จะทำงานได้ดี

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

นี่ควรเป็นคำตอบที่ได้รับการยอมรับเนื่องจาก jquery-mobile มีเฟรมเวิร์กที่เสถียรดี
pasx

1

สวยงามและสะอาดตาที่สุดคือปลั๊กอิน jQuery: https://github.com/untill/jquery.longclick/พร้อมใช้งานในรูปแบบ packacke: https://www.npmjs.com/package/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

คุณสามารถตรวจสอบเวลาเพื่อระบุ Click หรือ Long Press [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

คุณสามารถใช้jqueryTouch events ( ดูที่นี่ )

  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

ฉันต้องการบางสิ่งบางอย่างสำหรับเหตุการณ์คีย์บอร์ด longpress ฉันจึงเขียนสิ่งนี้

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.