জাভাস্ক্রিপ্ট: পাঠ্য নির্বাচন অক্ষম করুন


85

আমি আমার ওয়েবসাইটটিতে পাঠ্য নির্বাচন অক্ষম করতে জাভাস্ক্রিপ্ট ব্যবহার করছি।

কোডটি হ'ল:

<script type="text/JavaScript">

function disableselect(e) {
  return false
}

function reEnable() {
  return true
}

document.onselectstart = new Function ("return false")

if (window.sidebar) {
  document.onmousedown = disableselect
  document.onclick = reEnable
}
</script>

অনুরূপ স্ক্রিপ্ট এখানে পাওয়া যাবে

আমার লোকালহোস্টে: সমস্ত ব্রাউজার (ফায়ারফক্স, ক্রোম, আইই এবং সাফারি) দুর্দান্ত কাজ করে।

আমার লাইভ সাইটে: ঠিক আছে ফায়ারফক্স ছাড়ুন।

আমার প্রশ্নগুলি হ'ল:

  1. লাইভ সাইট এবং স্থানীয় হোস্টের জন্য ফায়ারফক্স কেন আলাদা আচরণ করে সে সম্পর্কে কারও কি পরামর্শ রয়েছে? দ্রষ্টব্য: জাভাস্ক্রিপ্ট সক্ষম হয়েছে।

  2. হতে পারে আমার স্ক্রিপ্টটি খুব সরলতর তাই আমি নিখুঁত একই ফলাফলের সাথে নিম্নলিখিতটি চেষ্টা করেছি


4
আমাকে আপনাকে এই ক্ষেত্রে জাভাস্ক্রিপ্টের ব্যবহার এড়াতে পরামর্শ দিন। শুধু সিএসএস ব্যবহার করুন, আপনি এই প্রশ্নে
সিএসএসে

দ্বিতীয় স্ক্রিপ্টটি সম্ভবত খুব পুরানো। নথিটি সরিয়ে ফেলুন! যেহেতু আমি বিশ্বাস করি এটি fx সমর্থন ভঙ্গ করে
এমপ্লুংজন

9
আমি সাইটগুলি ঘৃণা করি। আমি যদি কিছু পাঠ্য অনুলিপি করতে চাই তবে আমি ডেভ সরঞ্জামগুলি খুলতে পারি এবং যাইহোক এটি অনুলিপি করতে পারি। এটি কেবল একটি অপ্রয়োজনীয় অসুবিধা।
uylmz

4
রেক ঠিক যেমন বলেছেন এটির জন্য যদি আপনার খুব ভাল কারণ না থাকে তবে এটি করবেন না। অনেক লোক কেবল এটির জন্য অনুসন্ধান করতে বা কোনও শব্দ সন্ধানের জন্য একটি অভিধান ব্যবহার করতে চাইবে। এটি নিষিদ্ধ করা কেবল একটি বিরক্তি যা লোকদের আপনার সাইট থেকে দীর্ঘকাল দূরে সরিয়ে দিতে পারে।
সিজন টেকনোলজি

4
প্রথমত, আমি পৃষ্ঠাগুলিকেও ঘৃণা করি যা কেবল "মজাদার" জন্য এটি (পাঠ্য এবং কী নয়) নির্বাচন করতে নিষেধ করেছে, তবে আমি মনে করি এটি একটি ভাল প্রশ্ন, কারণ এটি নিষ্ক্রিয় করার ইচ্ছার কিছু বৈধ কারণ রয়েছে ( যেমন , মাউস অঙ্গভঙ্গি প্রয়োগ করা) বা যা কিছু হোক না কেন একটি খেলায় টেক্সট ব্লকগুলি টেনে আনুন এবং ছেড়ে দিন)। অবশ্যই, শেষটি অর্জনের জন্য জেএস ব্যবহার করা খারাপ, তবে সিএসএস সমাধানেরও এর সমস্যা রয়েছে (কিছু ব্রাউজারে user-selectএকাই কাজ করবে না, এটির কাজ করতে "-Vendor-" উপসর্গ যেমন প্রয়োজন -moz-user-selectএবং -webkit-user-selectতাই প্রয়োজন , এটিতে সমস্ত সম্ভাব্য প্রকারের সেট করা প্রয়োজন none)।
সাইবারকনাইট

উত্তর:


211

কেবল এই CSS পদ্ধতিটি ব্যবহার করুন:

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

আপনি এখানে একই উত্তরটি পেতে পারেন: সিএসএস ব্যবহার করে পাঠ্য নির্বাচন হাইলাইটিং কীভাবে অক্ষম করবেন?


7
আপনি যেখানে এই উত্তরটি পেয়েছেন সেখান থেকে এই লিঙ্কটি যুক্ত করুন: স্ট্যাকওভারফ্লো
রন ভ্যান ডের হেইজডেন

আপনাকে অনেক ধন্যবাদ. আইডি ব্যতীত সকল ক্ষেত্রে বডি সিএসএস কাজ করেছিল। আইই-র জন্য এই সমস্যাটি সমাধান করার জন্য কি ঝরঝরে সিএসএস সমাধান রয়েছে? আমি এখন সমস্ত ব্রাউজারগুলি কভার করতে জেএস এবং সিএসএসের সংমিশ্রণটি ব্যবহার করছি! থেক ইউ।
আর্পেজিও

এই সমাধানকারীটিকে কেন সমাধান হিসাবে ট্যাগ করা হয়নি? ... এটি সবচেয়ে সঠিক এবং সাধারণ উপায়ে প্রশ্নটি সমাধান করে। ২. এটি উল্লেখ করা উচিত যে এই সিএসএস ত্রুটিটি কেবলমাত্র শরীরের উপর নয় যে কোনও এইচটিএমএল উপাদানগুলিতে প্রয়োগ করা যেতে পারে।
TheCuBeMan

4
@ দ্য সিইউবিমান "ব্যবহারকারী-নির্বাচন" একটি মানহীন বৈশিষ্ট্য, এবং আইএমও, তাই সেরা সমাধান নয়।
ndugger

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

27

আমি টেনে আনার বৈশিষ্ট্য সরবরাহ করতে স্লাইডার ইউআই নিয়ন্ত্রণ লিখছি, ব্যবহারকারী যখন টেনে আনছেন তখন বিষয়বস্তু নির্বাচন করা থেকে রোধ করার এটি আমার উপায়:

function disableSelect(event) {
    event.preventDefault();
}

function startDrag(event) {
    window.addEventListener('mouseup', onDragEnd);
    window.addEventListener('selectstart', disableSelect);
    // ... my other code
}

function onDragEnd() {
    window.removeEventListener('mouseup', onDragEnd);
    window.removeEventListener('selectstart', disableSelect);
    // ... my other code
}

startDragআপনার ডোমে বাঁধুন :

<button onmousedown="startDrag">...</button>

আপনি যদি স্ট্যাটিকালি সমস্ত উপাদানটিতে পাঠ্য নির্বাচন নির্বাচন করতে অক্ষম করতে চান, উপাদানগুলি লোড হওয়ার পরে কোডটি কার্যকর করুন:

window.addEventListener('selectstart', function(e){ e.preventDefault(); });

      

4
এটি সেরা সমাধান, কারণ সিএসএস দ্রবণটি ডিভসের জন্য contenteditableঅ্যাট্রিবিউট দিয়ে কাজ করে না (যেমন আপনি যদি ব্যবহারকারীর মাউস দ্বারা নিয়ন্ত্রণটি পুনরায় আকার দেওয়ার সময় পাঠ্য নির্বাচনটি অক্ষম করতে চান)।
mbomb007

11

জাভাস্ক্রিপ্টের জন্য এই ফাংশনটি ব্যবহার করুন:

function disableselect(e) {return false}
document.onselectstart = new Function (return false)
document.onmousedown = disableselect

নির্বাচনটি সক্ষম করতে এটি ব্যবহার করুন:

function reEnable() {return true}

এবং আপনি যে কোনও জায়গায় এই ফাংশনটি ব্যবহার করুন:

document.onclick = reEnable

new Function (return false)বৈধ জাভাস্ক্রিপ্ট কোড ব্যতীত । শুধু ব্যবহার করুন document.onselectstart = disableselect
amik

@ আমিক এটি সম্পর্কে: document.oncontextmenu = new Function("return false;");বা এটি সিএসএস ব্যবহার করে:<body onselectstart="return false">
হাসান আজিমি

হ্যাঁ new Function("return false;")কাজ করবে, তবে disableselectআপনার ইতিমধ্যে যা ব্যবহার হয়েছে তার তুলনায় অহেতুক জটিল । onselectstart="return false"খুব কাজ করবে, তবে CSS এর সাথে কিছুই করার নেই। এছাড়াও আমি আপনার বাকী উত্তরও ভুল বলে লক্ষ্য করেছি - reEnableফাংশনটি মোটেই কাজ করবে না।
amik

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

ভাল তবে এসও শিক্ষার জন্য একটি জায়গা, তাই আমি এমন একটি জবাব সরবরাহের বিষয়টি বিবেচনা করি যা প্রযুক্তিগতভাবে উভয়ই ভুল এবং মোটেই ভাল ধারণা না বলে ব্যাখ্যা করা যায় না।
amik

5

আপনি যদি এইচটিএমএল পৃষ্ঠাটি পান তবে:

    <শরীর
    onbeforecopy = "প্রত্যাবর্তন মিথ্যা"
    ondragstart = "প্রত্যাবর্তন মিথ্যা" 
    onseLivetart = "প্রত্যাবর্তন মিথ্যা" 
    oncontextmenu = "মিথ্যা প্রত্যাবর্তন" 
    onselect = "document.selection.empty ()" 
    oncopy = "document.selection.empty ()">

সমস্ত ইভেন্ট অক্ষম করার একটি সহজ উপায়:

document.write(document.body.innerHTML)

আপনি এইচটিএমএল সামগ্রী পেয়েছেন এবং অন্যান্য জিনিস হারিয়েছেন।


4

যে কোনও একটি ব্রাউজারে ঠিক মতো কাজ করতে পারে, জাভাস্ক্রিপ্টের প্রয়োজন:

onselectstart = (e) => {e.preventDefault()}

উদাহরণ:

onselectstart = (e) => {
  e.preventDefault()
  console.log("nope!")
  }
Select me!


সিএসএস সমর্থন, এবং অক্ষম করে userSelectবা MozUserSelectফায়ারফক্সের পরীক্ষার দ্বারা অন্য একটি জেএস বিকল্প ।

let FF
if (CSS.supports("( -moz-user-select: none )")){FF = 1} else {FF = 0}
(FF===1) ? document.body.style.MozUserSelect="none" : document.body.style.userSelect="none"
Select me!


খাঁটি সিএসএস, একই যুক্তি। সতর্কতা আপনাকে প্রতিটি ব্রাউজারে এই বিধিগুলি প্রসারিত করতে হবে, এটি ভার্চুজ হতে পারে।

@supports (user-select:none) {
  div {
    user-select:none
  }
}

@supports (-moz-user-select:none) {
  div {
    -moz-user-select:none
  }
}
<div>Select me!</div>


0

সরল এই পাঠ্যটি অনুলিপি করুন এবং আগে রাখুন </body>

function disableselect(e) {
  return false
}

function reEnable() {
  return true
}

document.onselectstart = new Function ("return false")

if (window.sidebar) {
  document.onmousedown = disableselect
  document.onclick = reEnable
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.