জাভাস্ক্রিপ্ট সহ পাঠ্য নির্বাচন সাফ করুন


122

সহজ প্রশ্ন যার উত্তর আমি পাই না: আমি ওয়েবপৃষ্ঠায় নির্বাচিত যে কোনও পাঠ্যকে অনির্বাচিত করতে জাভাস্ক্রিপ্ট (বা jQuery) কীভাবে ব্যবহার করতে পারি? EG ব্যবহারকারী কিছুটা টেক্সট হাইলাইট করতে ক্লিক করে এবং টেনে আনেন - আমি একটি নির্বাচন ফাংশন অনির্বাচিত করতে চাই (যা) এই নির্বাচনটি সাফ করে। এটি লিখতে আমার কীভাবে যাওয়া উচিত?

সাহায্যের জন্য ধন্যবাদ.

উত্তর:


206
if (window.getSelection) {
  if (window.getSelection().empty) {  // Chrome
    window.getSelection().empty();
  } else if (window.getSelection().removeAllRanges) {  // Firefox
    window.getSelection().removeAllRanges();
  }
} else if (document.selection) {  // IE?
  document.selection.empty();
}

ক্রেডিট মিঃ ওয়াই।


4
এটি ধরে নিয়েছে যে document.selectionঅস্তিত্বই এর কোনও empty()পদ্ধতির অস্তিত্বকে বোঝায় । আপনি অন্য প্রতিটি ক্ষেত্রে পদ্ধতিটির জন্য পরীক্ষা করেছেন, যাতে আপনি emptyচূড়ান্ত ক্ষেত্রেও পরীক্ষা করতে পারেন।
টিম ডাউন

ধন্যবাদ এটি আমার jquery.tableCheckbox.js প্লাগইন এর মধ্যে ব্যবহার করুন ।
মার্কো কেরউইটস

1
আমি আপনার পরামর্শের উপর ভিত্তি করে একটি পরিপূর্ণ কাজের উদাহরণ তৈরি করেছি তবে কিছু অতিরিক্ত যুক্ত করে jsfiddle.net/mkrivan/hohx4nes সর্বাধিক গুরুত্বপূর্ণ লাইনটি উইন্ডো.সেটলেশন ()। এই আই ছাড়া কিছু শর্তে পাঠ্যটি অনির্বাচিত করে না। এবং আমি পদ্ধতি সনাক্তকরণের ক্রম পরিবর্তন করেছি।
মিক্লোস ক্রিভান

তুমি আমার দিন বাঁচাও বন্ধু! আমি স্ক্র্যাচপ্যাড ব্যবহার করছিলাম এবং পুরো পৃষ্ঠাটি স্ক্র্যাচ করার সময় নির্বাচন করা হয়েছিল এবং এই ভাল স্ক্রিপ্টের সাহায্যে স্ক্র্যাচপ্যাড প্লাগইন ব্যবহার করার আগে আমি আমার পৃষ্ঠাটি অনির্বাচিত করছি। মূলত এটি কাজ করে! অনেক ধন্যবাদ!
একত্রিত করুন

1
window.getSelection().removeAllRanges();আইই (প্রান্ত) এবং সাফারিতে আমি সূক্ষ্মভাবে কাজ করি ।
চিলি

48

আপনি যে বৈশিষ্ট্যগুলি সরাসরি চান তা পরীক্ষা করার জন্য সেরা:

var sel = window.getSelection ? window.getSelection() : document.selection;
if (sel) {
    if (sel.removeAllRanges) {
        sel.removeAllRanges();
    } else if (sel.empty) {
        sel.empty();
    }
}

15

ডি-নির্বাচন বিষয়ক রাজ্য 2014

আমি নিজস্ব কিছু গবেষণা করেছি। আমি লিখেছি এবং এই দিনগুলিতে ব্যবহার করছি ফাংশন এখানে:

(function deselect(){
  var selection = ('getSelection' in window)
    ? window.getSelection()
    : ('selection' in document)
      ? document.selection
      : null;
  if ('removeAllRanges' in selection) selection.removeAllRanges();
  else if ('empty' in selection) selection.empty();
})();

মূলত, getSelection().removeAllRanges()বর্তমানে সমস্ত আধুনিক ব্রাউজার (আই 9+ সহ) দ্বারা সমর্থিত। এটি পরিষ্কারভাবে সঠিক পদ্ধতিটি এগিয়ে চলছে।

সামঞ্জস্যতা সমস্যাগুলির জন্য দায়ী:

  • Chrome এবং সাফারি এর পুরানো সংস্করণ ব্যবহার করা হয়েছে getSelection().empty()
  • আইই 8 এবং নীচে ব্যবহৃত document.selection.empty()

হালনাগাদ

পুনরায় ব্যবহারের জন্য এই নির্বাচনের কার্যকারিতা গুটিয়ে রাখা সম্ভবত একটি ভাল ধারণা।

function ScSelection(){
  var sel=this;
  var selection = sel.selection = 
    'getSelection' in window
      ? window.getSelection()
      : 'selection' in document
        ? document.selection
        : null;
  sel.deselect = function(){
    if ('removeAllRanges' in selection) selection.removeAllRanges();
    else if ('empty' in selection) selection.empty();
    return sel; // chainable :)
  };
  sel.getParentElement = function(){
    if ('anchorNode' in selection) return selection.anchorNode.parentElement;
    else return selection.createRange().parentElement();
  };
}

// use it
var sel = new ScSelection;
var $parentSection = $(sel.getParentElement()).closest('section');
sel.deselect();

আমি এটিকে একটি সম্প্রদায়ের উইকি তৈরি করেছি যাতে আপনি লোকেরা এতে কার্যকারিতা যুক্ত করতে পারেন বা মানগুলি বিকশিত হওয়ার সাথে সাথে আপডেট করতে পারেন।


7
আমার উত্তর হিসাবে একই কাজ করছে। 4 বছরে কিছুই পরিবর্তন হয়নি।
টিম ডাউন

3
ভয়ঙ্কর। আপনি কেবল অন্য পোস্টার থেকে বাস্তবায়নটি আক্ষরিক অর্থেই চুরি করেননি, তবে আপনি এটি সম্পূর্ণরূপে সিন্টেক্সিকভাবে ট্র্যাশ করেছেন।
কামেলকেভ

1

এখানে গৃহীত উত্তর, তবে কোডের দুটি লাইনে:

var selection = window.getSelection ? window.getSelection() : document.selection ? document.selection : null;
if(!!selection) selection.empty ? selection.empty() : selection.removeAllRanges();

শুধুমাত্র পরীক্ষা আমি না removeAllRanges অস্তিত্বের - কিন্তু আমি যতদূর জানি কোন ব্রাউজার যা হয়েছে পারেন আছে window.getSelectionবা document.selectionকিন্তু না আছে হয় একটি .emptyবা .removeAllRangesযে সম্পত্তির জন্য।



-1

ডান ক্লিক এবং পাঠ্য নির্বাচন প্রতিরোধ করতে এটি আপনার স্ক্রিপ্টে যুক্ত করুন।

ব্যতিক্রমগুলি 'ওম' এ যুক্ত করা যেতে পারে।

var d=document,om=['input','textarea','select'];;
function ie(){if(d.all){(mg);return false;}}function mz(e){if(d.layers||(d.getElementById&&!d.all)){if(e.which==2||e.which==3){(mg);return false;}}}if(d.layers){d.captureEvents(Event.mousedown);d.onmousedown=mz;}else{d.onmouseup=mz;d.oncontextmenu=ie;}d.oncontextmenu=new Function('return false');om=om.join('|');function ds(e){if(om.indexOf(e.target.tagName.toLowerCase())==-1);return false;}function rn(){return true;}if(typeof d.onselectstart!='undefined')d.onselectstart=new Function('return false');else{d.onmousedown=ds;d.onmouseup=rn;}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.