আপনার প্রশ্নটি কী তা সম্পূর্ণরূপে পরিষ্কার নয় তবে মাউসের জন্য হোভার ইফেক্টটি ধরে রেখে আপনি যদি ডাবল ক্লিকটি সরিয়ে দিতে চান তবে আমার পরামর্শটি হ'ল:
touchstart
এবং উপর হোভার ইফেক্ট যুক্ত করুন mouseenter
।
- উপর হোভার প্রভাবগুলি সরান
mouseleave
, touchmove
এবং click
।
পটভূমি
কোনও মাউস অনুকরণের জন্য, ওয়েবকিট মোবাইলের মতো ব্রাউজারগুলি যদি কোনও স্পর্শ পর্দায় (আইপ্যাডের মতো) স্পর্শ করে এবং একটি আঙুল ছেড়ে দেয় তবে নিম্নলিখিত ইভেন্টগুলিতে ফায়ার করে (উত্স: html5rocks.com এ টাচ এবং মাউস ):
touchstart
touchmove
touchend
- 300 মিমি বিলম্ব, যেখানে ব্রাউজার নিশ্চিত করে যে এটি ডাবল ট্যাপ নয়, এটি একটি একক ট্যাপ
mouseover
mouseenter
- দ্রষ্টব্য : যদি কোনও
mouseover
, mouseenter
বা mousemove
ইভেন্ট পৃষ্ঠার সামগ্রী পরিবর্তন করে, নিম্নলিখিত ইভেন্টগুলি কখনই বরখাস্ত করা হয় না।
mousemove
mousedown
mouseup
click
ওয়েব ব্রাউজারকে মাউসের ইভেন্টগুলি এড়িয়ে যেতে বলা সহজভাবে বলে মনে হচ্ছে না।
সবচেয়ে খারাপ কী, যদি কোনও মাউসওভার ইভেন্ট পৃষ্ঠার সামগ্রী পরিবর্তন করে, ক্লিক ইভেন্টটি কখনই বরখাস্ত করা হয় না, যেমন সাফারি ওয়েব সামগ্রী গাইড - হ্যান্ডলিং ইভেন্টস , বিশেষত ওয়ান-ফিঙ্গার ইভেন্টস 6.4 এ চিত্র । "সামগ্রী পরিবর্তন" হুবহু কী, ব্রাউজার এবং সংস্করণে নির্ভর করবে on আমি খুঁজে পেয়েছি যে আইওএস 7.0 এর জন্য, পটভূমির রঙে কোনও পরিবর্তন হয় না (বা আর নেই?)।
সমাধান ব্যাখ্যা
পুনরুদ্ধার করতে:
touchstart
এবং উপর হোভার ইফেক্ট যুক্ত করুন mouseenter
।
- উপর হোভার প্রভাবগুলি সরান
mouseleave
, touchmove
এবং click
।
মনে রাখবেন কোনও পদক্ষেপ নেই touchend
!
এটি মাউস ইভেন্টগুলির জন্য পরিষ্কারভাবে কাজ করে: mouseenter
এবং mouseleave
(এর সামান্য উন্নত সংস্করণ mouseover
এবং mouseout
) বরখাস্ত করা হয়, এবং হোভার যুক্ত এবং সরিয়ে ফেলুন।
ব্যবহারকারী যদি আসলে click
লিঙ্ক থাকে তবে হোভার ইফেক্টটিও সরানো হবে। এটি নিশ্চিত করে যে ব্যবহারকারী যদি ওয়েব ব্রাউজারে পিছনের বোতামটি টিপেন তবে এটি সরানো হবে।
এটি স্পর্শ ইভেন্টগুলির জন্যও কাজ করে: touchstart
হোভার ইফেক্টটিতে যুক্ত হয়। এটি '' 'নয়' '' মুছে ফেলা হয়েছে touchend
। এটি আবার যুক্ত করা হয় mouseenter
, এবং যেহেতু এটি কোনও সামগ্রী পরিবর্তন করে না (এটি ইতিমধ্যে যুক্ত করা হয়েছিল), click
ইভেন্টটিও বরখাস্ত করা হয়েছে এবং ব্যবহারকারীকে আবার ক্লিক করার প্রয়োজন ছাড়াই লিঙ্কটি অনুসরণ করা হয়!
ব্রাউজারের একটি touchstart
ইভেন্টের মধ্যে যে 300 মিমি বিলম্ব হয় এবং click
এটি আসলে ভাল ব্যবহারে রাখা হয় কারণ হোভার এফেক্টটি এই অল্প সময়ের মধ্যে প্রদর্শিত হবে।
যদি ব্যবহারকারী ক্লিকটি বাতিল করার সিদ্ধান্ত নেন, আঙুলের একটি সরানো স্বাভাবিকের মতোই এটি করবে। সাধারণত, এটি কোনও সমস্যা যেহেতু কোনও mouseleave
ইভেন্ট বরখাস্ত হয় না, এবং হোভার ইফেক্ট স্থির থাকে। ধন্যবাদ, এটিকে হোভার ইফেক্টটি সরিয়ে সহজেই ঠিক করা যায় touchmove
।
এটাই!
মনে রাখবেন যে 300 মিমি বিলম্ব সরিয়ে নেওয়া সম্ভব, উদাহরণস্বরূপ ফাস্টক্লিক লাইব্রেরি ব্যবহার করে তবে এটি এই প্রশ্নের সুযোগের বাইরে।
বিকল্প সমাধান
নিম্নলিখিত বিকল্পগুলির সাথে আমি নিম্নলিখিত সমস্যাগুলি পেয়েছি:
- ব্রাউজার সনাক্তকরণ: ত্রুটিগুলির পক্ষে অত্যন্ত প্রবণ। ধরে নেওয়া যায় যে কোনও ডিভাইসে মাউস বা স্পর্শ রয়েছে, যখন স্পর্শটি প্রসারিত হয় তখন উভয়ের সংমিশ্রণটি আরও বেশি সাধারণ হয়ে উঠবে।
- সিএসএস মিডিয়া সনাক্তকরণ: কেবলমাত্র সিএসএস-এর সমাধান সম্পর্কে আমি সচেতন। তবুও ত্রুটিগুলির প্রবণতা এবং এখনও ধরে নেওয়া হয় যে কোনও ডিভাইসে মাউস বা স্পর্শ রয়েছে, যখন উভয়ই সম্ভব।
- ক্লিক ইভেন্টটি এতে অনুকরণ করুন
touchend
: এটি লিঙ্কটি ভুলভাবে অনুসরণ করবে, এমনকি যদি ব্যবহারকারীটি লিঙ্কটি ক্লিক করার উদ্দেশ্য না করে কেবল স্ক্রল বা জুম করতে চায়।
- মাউস ইভেন্টগুলিকে দমন করতে একটি ভেরিয়েবল ব্যবহার করুন: এটির মধ্যে একটি পরিবর্তনশীল সেট
touchend
হয় যদি পরবর্তী সময়ে মাউস ইভেন্টগুলিতে যদি সেই সময়ে অবস্থার পরিবর্তনগুলি প্রতিরোধ করতে হয় তবে এটি যদি একটি শর্ত হিসাবে ব্যবহৃত হয়। পরিবর্তন ইভেন্টটি ক্লিক ইভেন্টে পুনরায় সেট করা হয়। আপনি যদি সত্যিই স্পর্শ ইন্টারফেসগুলিতে হোভার ইফেক্টটি না চান তবে এটি একটি শালীন সমাধান। দুর্ভাগ্যক্রমে, যদি touchend
কোনও কারণে অন্য কোনও কারণে গুলি ছড়িয়ে দেওয়া হয় এবং কোনও ক্লিক ইভেন্ট নিক্ষেপ করা হয় না (উদাহরণস্বরূপ ব্যবহারকারী স্ক্রলড বা জুমড হয়েছে), এবং পরবর্তীকালে একটি মাউসের সাথে লিঙ্কটি অনুসরণ করার চেষ্টা করছে (অর্থাত্ উভয় মাউস এবং স্পর্শ ইন্টারফেসের একটি ডিভাইসে) )।
আরও পড়া
আরও দেখুন আইপ্যাড / আইফোন দুবার ক্লিক সমস্যা এবং মোবাইল ব্রাউজারগুলিতে হোভার প্রভাবগুলি অক্ষম করুন ।