কোনও ওয়েবসাইটের অনুচ্ছেদে যেমন jQuery ব্যবহার করে হাইলাইট করা পাঠ্য পাওয়া সম্ভব?
কোনও ওয়েবসাইটের অনুচ্ছেদে যেমন jQuery ব্যবহার করে হাইলাইট করা পাঠ্য পাওয়া সম্ভব?
উত্তর:
ব্যবহারকারী নির্বাচিত পাঠ্য পাওয়া তুলনামূলক সহজ। JQuery জড়িত করে লাভ করার কোনও সুবিধা নেই যেহেতু আপনার window
এবং document
অবজেক্টগুলি ব্যতীত অন্য কিছুই দরকার নেই ।
function getSelectionText() {
var text = "";
if (window.getSelection) {
text = window.getSelection().toString();
} else if (document.selection && document.selection.type != "Control") {
text = document.selection.createRange().text;
}
return text;
}
আপনি যদি এমন একটি প্রয়োগে আগ্রহী হন যা নির্বাচনের <textarea>
এবং পাঠ্য <input>
উপাদানগুলির সাথেও কাজ করে তবে আপনি নিম্নলিখিতটি ব্যবহার করতে পারেন। যেহেতু এখন ২০১ 2016 আই আই <= 8 সাপোর্টের জন্য প্রয়োজনীয় কোডটি বাদ দিচ্ছি তবে এস এর জন্য আমি অনেক জায়গায় স্টাফ পোস্ট করেছি।
function getSelectionText() {
var text = "";
var activeEl = document.activeElement;
var activeElTagName = activeEl ? activeEl.tagName.toLowerCase() : null;
if (
(activeElTagName == "textarea") || (activeElTagName == "input" &&
/^(?:text|search|password|tel|url)$/i.test(activeEl.type)) &&
(typeof activeEl.selectionStart == "number")
) {
text = activeEl.value.slice(activeEl.selectionStart, activeEl.selectionEnd);
} else if (window.getSelection) {
text = window.getSelection().toString();
}
return text;
}
document.onmouseup = document.onkeyup = document.onselectionchange = function() {
document.getElementById("sel").value = getSelectionText();
};
Selection:
<br>
<textarea id="sel" rows="3" cols="50"></textarea>
<p>Please select some text.</p>
<input value="Some text in a text input">
<br>
<input type="search" value="Some text in a search input">
<br>
<input type="tel" value="4872349749823">
<br>
<textarea>Some text in a textarea</textarea>
window.getSelection()
) এর জন্য। document.selection.type
চেক পরীক্ষা করছে যে নির্বাচনের একটি নিয়ন্ত্রণ নির্বাচন একটি টেক্সট নির্বাচন বদলে গেছে। আইই-তে, নিয়ন্ত্রণ নির্বাচন হ'ল রূপরেখাগুলি এবং পুনরায় আকারের হ্যান্ডলগুলি সহ এক বা একাধিক উপাদান (যেমন চিত্র এবং ফর্ম নিয়ন্ত্রণগুলি) সহ একটি সম্পাদনযোগ্য উপাদানের অভ্যন্তরের একটি নির্বাচন। আপনি যদি .createRange()
এই জাতীয় নির্বাচনের ডাক দেন তবে আপনি একটি এর ControlRange
চেয়ে একটি পেয়ে যাবেন TextRange
এবং ControlRange
এর কোনও text
সম্পত্তি নেই।
selectionStart
বা selectionEnd
কোনও <input>
উপাদান টাইপের (যেমন "সংখ্যা") না করেন তবে ক্রোমে কনসোলে সতর্কতা পান এটি সমর্থন করুন ( উদাহরণস্বরূপ jsfiddle.net/6zoposby/2 দেখুন )। আইটির অস্তিত্বের জন্য আমি চেকটি রেখে দিয়েছি selectionStart
যাতে আইআই <= 8 তে কোডটি ভেঙে না যায় আমি স্বীকার করি যে চেকটি activeElement
এখন সম্ভবত অতিমাত্রার চেয়ে বেশি। আমি slice
এটি ব্যবহার করি কারণ এটি আরও শক্তিশালী (যদিও এটি এখানে দরকারী নয়) এবং এর চেয়ে টাইপ করার চেয়ে কিছুটা ছোট substring
।
এইভাবে হাইলাইট করা পাঠ্য পান:
window.getSelection().toString()
এবং অবশ্যই এর জন্য একটি বিশেষ চিকিত্সা:
document.selection.createRange().htmlText
document.selection
সমর্থন সরিয়ে নেওয়া হয়েছিল এবং এর সাথে প্রতিস্থাপন করা হয়েছে window.getSelection
"। উত্স: connect.microsoft.com/IE/feedback/details/795325/...
আপনি ক্রোম ব্যবহার করছেন (অন্য ব্রাউজারগুলি যাচাই করতে পারবেন না) এবং পাঠ্যটি যদি একই ডিওএম এলিমেন্টে থাকে তবে এই সমাধানটি কার্যকর করে:
window.getSelection().anchorNode.textContent.substring(
window.getSelection().extentOffset,
window.getSelection().anchorOffset)
ব্যবহার window.getSelection().toString()
।
আপনি ডেভেলপার.মোজিলা.আরগতে আরও পড়তে পারেন