আপনি কীভাবে জাভাস্ক্রিপ্টে ফোকাস সাফ করবেন?


159

আমি জানি এটি এতটা শক্ত হওয়া উচিত নয়, তবে গুগলে আমি উত্তরটি খুঁজে পেলাম না।

আমি জাভাস্ক্রিপ্টের একটি টুকরোগুলি সম্পাদন করতে চাই যা ফোকাসটি কোন উপাদানটিতে চলছে তা সময়ের আগে না জেনে এটি যে উপাদানটিতে রয়েছে তার থেকে ফোকাস সাফ করবে। এটি ফায়ারফক্স 2 পাশাপাশি আরও আধুনিক ব্রাউজারে কাজ করতে হবে।

এটি করার কোনও ভাল উপায় আছে?


পরিষ্কার ফোকাস মানে কি? - এটা কি অস্পষ্টতার মতো?
plodder

3
আমি এটি তৈরি করতে চাই যাতে ব্রাউজারে কোনও উপাদান ফোকাস না করে।
Andres

উত্তর:


170

উত্তর: document.activeElement

আপনি যা চান তা করতে, ব্যবহার করুন document.activeElement.blur()

আপনার যদি ফায়ারফক্স 2 সমর্থন করার প্রয়োজন হয় তবে আপনি এটি ব্যবহার করতে পারেন:

function onElementFocused(e)
{
    if (e && e.target)
        document.activeElement = e.target == document ? null : e.target;
} 

if (document.addEventListener) 
    document.addEventListener("focus", onElementFocused, true);

8
যদি 0.66% ব্রাউজার ভাগের সাথে ফায়ারফক্স 2, যদি একটি চুক্তি বিরতি হয় ... আমার একটি ঠিক আছে, যা আমার সম্পাদিত উত্তরে রয়েছে।
জেপিএস

21
২০১৩ সালে, ফায়ারফক্স ২-এর ব্রাউজার শেয়ারটি 0.66% এর চেয়ে কম, এবং document.activeElement.blur()এই প্রভাবটি অর্জনের সবচেয়ে সহজ উপায়।
চৌই

88

.focus()এবং তারপরে .blur()আপনার পৃষ্ঠায় স্বেচ্ছাচারী কিছু something যেহেতু শুধুমাত্র একটি উপাদানের ফোকাস থাকতে পারে, তাই এটি সেই উপাদানটিতে স্থানান্তরিত হয় এবং তারপরে সরানো হয়।


কোনও অদৃশ্য উপাদানকে কেন্দ্রীভূত করার কোনও উপায় আছে?
আন্দ্রেস

1
আমি এটি করার সর্বোত্তম উপায় সম্পর্কে বিশেষজ্ঞ নই; তবে আপনি অবশ্যই এটি অফ-স্ক্রিনে বা কোনও overflow: clipস্টাইলযুক্ত উপাদানের সীমানার বাইরে অবস্থান করতে পারেন । তবে আপনি কেবল এমন একটি ক্ষেত্র ব্যবহার করতে পারেন যা ইতিমধ্যে পৃষ্ঠায় বিদ্যমান। বা কেবল একটি উদ্দেশ্যে তৈরি করুন এবং এটি আবার সরিয়ে দিন।
কেভিন রেড

আমি মনে করি অফ স্ক্রিনের কোনও উপাদানটিতে ফোকাস সেট করা সেই উপাদানটিতে স্ক্রোলকে বাধ্য করবে। তবে, আপনি এই উদ্দেশ্যে একটি অদৃশ্য উপাদান তৈরি করতে পারেন। বলা হচ্ছে, কিছু ব্রাউজারের ক্যারেটটি অপসারণ করতে খুব কঠিন সময় থাকতে পারে। শুধু অস্পষ্টতা () সম্ভবত আরও ভাল কাজ করবে। আপনি কী কীআপ (কীডাউন) ইভেন্ট হ্যান্ডলারের সাহায্যে কী পেতে পারেন।
অ্যালেক্সিস উইলক

5
এই উত্তরটি তারিখ সীমার বাইরে এবং হিসাবে 2017. ব্যবহারের activeElement পরিবর্তে বছরের মধ্যে প্রযোজ্য নয়, stackoverflow.com/a/2520670/39808
পল ফিশার

এটি এখনও দীর্ঘ সময়ের জন্য কাজ করে এবং ফোকাসটি সরিয়ে দেয় (যা টিএবি নেভিগেশনে হস্তক্ষেপ করতে পারে) এছাড়াও "অন্য কিছু স্বেচ্ছাচারী" কী হওয়া উচিত তা তাত্ক্ষণিকভাবে স্পষ্ট নয়।
ব্যবহারকারী 202729

49
document.activeElement.blur();

আইই 9-তে ভুল কাজ করে - যদি সক্রিয় উপাদান ডকুমেন্টের হয় তবে এটি পুরো ব্রাউজার উইন্ডোটিকে ঝাপসা করে। এই ক্ষেত্রে পরীক্ষা করা আরও ভাল:

if (document.activeElement != document.body) document.activeElement.blur();

এটি সত্য, তবে আজ প্রায় কেউই আইআই 9 ব্যবহার করে না।
ডোনাল্ড ডাক

18

টাইপস্ক্রিপ্ট ব্যবহার করার সময় এখানে প্রদত্ত যে কোনও উত্তর সম্পূর্ণরূপে সঠিক নয়, কারণ আপনি যে ধরনের উপাদান নির্বাচন করেছেন তা আপনি জানেন না।

সুতরাং এটি পছন্দ করা হবে:

if (document.activeElement instanceof HTMLElement)
    document.activeElement.blur();

আমি আরও স্বীকৃত উত্তরের প্রদত্ত সমাধানটি ব্যবহার করে নিরুৎসাহিত করব, কারণ ফলস্বরূপ অস্পষ্টতাটি সরকারী অনুমানের অংশ নয় এবং এটি যে কোনও মুহুর্তে ভেঙে যেতে পারে।


6
২০১০ সালে আমি যে প্রশ্নটি পুনরায় জিজ্ঞাসা করেছি, তার বিকাশের উত্তর কীভাবে অব্যাহত রয়েছে তা দেখতে মজাদার।
আন্দ্রেস

2

ডামিএলেম.ফোকাস () যেখানে ডামিএলেম একটি লুকানো বস্তু (যেমন নেতিবাচক জিন ইন্ডেক্স রয়েছে)?


0

আপনি উইন্ডো.ফোকাস () কল করতে পারেন;

তবে স্থানান্তরিত বা ফোকাস হারাতে পৃষ্ঠার চারপাশে যাওয়ার জন্য ট্যাব কী ব্যবহার করে যে কারও সাথে হস্তক্ষেপ করতে বাধ্য।

আপনি কীকোড 13 শুনছিলেন, এবং ট্যাব কী টিপলে যদি প্রভাবটি আগে থেকে যায় তবে।


-3

JQuery এর সাথে এটি ঠিক: $(this).blur();


2
এটি একটি পুরানো উত্তর তাই আপনি এখনই জানতে পারবেন, তবে এই উত্তরটি প্রয়োগ হয় না এমন দুটি কারণ রয়েছে। ১. এটি ধরে নিয়েছে যে ওপি jquery ব্যবহার করছিল, ২. ফোকাসযুক্ত thisউপাদান হওয়া দরকার, যখন প্রশ্নে স্পষ্টভাবে বলা হয়েছে যে ওপি সময়ের আগে ফোকাসযুক্ত উপাদানটি জানে না।
ব্র্যান্ডন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.