আমি কয়েকটি জিনিস বাদে লেপের উত্তর পছন্দ করেছি:
- ব্রাউজার-স্নিফিং, jQuery বা কোনও অনুকূল নয়
- শুকনো
- আইজে 8-তে কাজ করে না যদি আপত্তিটির পিতা-মাতা ক্রিয়েটেক্সট্রেঞ্জ সমর্থন করে না
- সেটবেসএন্ডএক্সেন্ট ব্যবহারের জন্য Chrome এর ক্ষমতাটি হ্রাস করা উচিত (আইএমও)
- একাধিক ডিওএম উপাদান ("নির্বাচিত" উপাদানগুলির মধ্যে উপাদান) জুড়ে বিস্তৃত পাঠ্য নির্বাচন করবেন না। অন্য কথায় আপনি যদি একাধিক স্প্যান উপাদানযুক্ত একটি ডিভকে সেলটেক্সট কল করেন তবে এটি সেই উপাদানগুলির প্রত্যেকটির পাঠ্য নির্বাচন করবে না । এটি আমার জন্য একটি চুক্তিভঙ্গকারী, ওয়াইএমএমভি।
অনুপ্রেরণার জন্য উত্তরটি লিপ করার জন্য একটি অনুমোদনের সাথে আমি এখানে এসেছি। আমি নিশ্চিত যে এটি সম্ভবত কিছুটা ভারি হাতে থাকায় আমি উপহাস করব (এবং বাস্তবে মোরেসোও হতে পারে তবে আমি খনন করি)। তবে এটি কাজ করে এবং ব্রাউজার-স্নিগিং এড়ানো এবং এটাই মূল বিষয় ।
selectText:function(){
var range,
selection,
obj = this[0],
type = {
func:'function',
obj:'object'
},
// Convenience
is = function(type, o){
return typeof o === type;
};
if(is(type.obj, obj.ownerDocument)
&& is(type.obj, obj.ownerDocument.defaultView)
&& is(type.func, obj.ownerDocument.defaultView.getSelection)){
selection = obj.ownerDocument.defaultView.getSelection();
if(is(type.func, selection.setBaseAndExtent)){
// Chrome, Safari - nice and easy
selection.setBaseAndExtent(obj, 0, obj, $(obj).contents().size());
}
else if(is(type.func, obj.ownerDocument.createRange)){
range = obj.ownerDocument.createRange();
if(is(type.func, range.selectNodeContents)
&& is(type.func, selection.removeAllRanges)
&& is(type.func, selection.addRange)){
// Mozilla
range.selectNodeContents(obj);
selection.removeAllRanges();
selection.addRange(range);
}
}
}
else if(is(type.obj, document.body) && is(type.obj, document.body.createTextRange)) {
range = document.body.createTextRange();
if(is(type.obj, range.moveToElementText) && is(type.obj, range.select)){
// IE most likely
range.moveToElementText(obj);
range.select();
}
}
// Chainable
return this;
}
এটাই. আপনি যা কিছু দেখেছেন তা হ'ল পাঠযোগ্যতা এবং / অথবা সুবিধার জন্য। অপেরা, সাফারি, ক্রোম, ফায়ারফক্স এবং আইই এর সর্বশেষ সংস্করণগুলিতে ম্যাকের পরীক্ষিত। আইই 8 তেও পরীক্ষিত। এছাড়াও আমি সাধারণত যখন কেবল ব্লকগুলির ভিতরে / যখন প্রয়োজন হয় তবে ভেরিয়েবলগুলি ঘোষণা করি তবে jslint পরামর্শ দিয়েছিল সেগুলি সমস্ত শীর্ষে ঘোষণা করা উচিত। ঠিক আছে jslint।
সম্পাদনা
আমি কীভাবে এটিকে অপের কোডটিতে টাই করতে হবে তা অন্তর্ভুক্ত করতে ভুলে গিয়েছি:
function SelectText(element) {
$("#" + element).selectText();
}
চিয়ার্স