আইপ্যাডের জন্য সাফারিতে jQuery ব্যবহার করে আমি কীভাবে টাচ ইভেন্টগুলি চিনতে পারি? এটা কি সম্ভব?


191

JQuery ব্যবহার করে আইপ্যাডের সাফারি ব্রাউজারে টাচ ইভেন্টগুলি সনাক্ত করা সম্ভব?

আমি একটি ওয়েব অ্যাপ্লিকেশনটিতে মাউসওভার এবং মাউসআউট ইভেন্টগুলি ব্যবহার করি। মাউসআউট এবং মাউসমোভের মতো ইভেন্ট না থাকায় আইপ্যাডের সাফারি ব্রাউজারের জন্য কি একই জাতীয় ইভেন্ট রয়েছে?

উত্তর:


240

কোর জিকিউরির স্পর্শ ইভেন্টগুলির জন্য বিশেষ কিছু নেই তবে আপনি নীচের ইভেন্টগুলি ব্যবহার করে সহজেই নিজের তৈরি করতে পারেন

  • touchstart
  • টাচমুভ
  • touchend
  • স্পর্শ বাতিল

উদাহরণস্বরূপ, touchmove

document.addEventListener('touchmove', function(e) {
    e.preventDefault();
    var touch = e.touches[0];
    alert(touch.pageX + " - " + touch.pageY);
}, false);

এটি বেশিরভাগ ওয়েবকিট ভিত্তিক ব্রাউজারগুলিতে কাজ করে (অন্তর্ভুক্ত অ্যান্ড্রয়েড)।

এখানে কিছু ভাল ডকুমেন্টেশন দেওয়া আছে


2
ডেভিডকে অনেক ধন্যবাদ, আমি মনে করি এটি কার্যকর হবে তবে ই টুচস [0] কী? আপনি কি "ই" যুক্তি বিশদটি বর্ণনা করতে পারেন?
অভিষেক বি।

7
e হ'ল ইভেন্ট অবজেক্ট যা স্বয়ংক্রিয়ভাবে হ্যান্ডলারের কাছে চলে যায়। সাফারি ব্রাউজারের জন্য (এবং অ্যান্ড্রয়েডও) এতে এখন স্ক্রিনে ব্যবহারকারীরা যে সমস্ত স্পর্শ করেছেন তার একটি অ্যারে রয়েছে। প্রতিটি স্পর্শের নিজস্ব বৈশিষ্ট্য রয়েছে (উদাহরণস্বরূপ x, y স্থানাঙ্ক)
ডেভিড পীন

1
এখন কীভাবে আপনি ইভেন্টটি ট্রিগার করতে কোন উপাদানটি সন্ধান করতে যাচ্ছেন -__-
মুহাম্মদ উমর

148

আপনি যদি jQuery 1.7+ ব্যবহার করেন তবে এটি অন্য সমস্ত উত্তরগুলির চেয়েও সহজ।

$('#whatever').on({ 'touchstart' : function(){ /* do something... */ } });

1
হ্যাঁ, টিমোথি, আমি আমার প্রকল্প শুরু করার সময় আমি 1.7+ সংস্করণ ব্যবহার করিনি। এখন অনওয়ার্ডস আমি jquery 1.7+ ব্যবহার করছি .. ভাল পরামর্শ এবং উত্তর দেওয়ার জন্য ধন্যবাদ .. ধন্যবাদ অনেক। :)
অভিষেক বি।

7
এটি ভাল কাজ করে। একই কাজটি করার জন্য আমার ক্লিক এবং টাচ স্টার্টের দরকার ছিল এবং আমি অ-অবজেক্ট সিনট্যাক্সে $('#whatever').on('touchstart click', function(){ /* do something... */ });
অভ্যস্ত

1
আমি যখন যাই $('#whatever').on({ 'touchstart' : function(ev){}});, evস্পর্শগুলি (ছোঁয়া, টার্গেটটচ বা পরিবর্তিত স্পর্শগুলি) সম্পর্কে কোনও তথ্য আছে বলে মনে হয় না
অক্টোপাস

8
@ অক্টোপাস: আপনি স্পর্শ তথ্য নীচে পাবেন ev.originalEvent
পিটার ব্লুমফিল্ড

1
হ্যাঁ অবশ্যই আয়নবাজরামি দস্তাবেজগুলি পরীক্ষা করুন এবং "প্রতিনিধি ইভেন্টগুলি" সন্ধান করুন। new ("# নতুন উপাদানগুলির জন্য নিরীক্ষণের জন্য # উপাদান") on ("ইভেন্টএক্স", "# উপাদান", ফাংশন (ইভেন্ট) {/ * যাই হোক * /});
honk31

24

সবচেয়ে সহজ পন্থা হ্যামার.জেএস এর মতো মাল্টিটুচ জাভাস্ক্রিপ্ট লাইব্রেরি ব্যবহার করা । তারপরে আপনি কোড লিখতে পারেন:

canvas
    .hammer({prevent_default: true})
    .bind('doubletap', function(e) { // And double click
        // Zoom-in
    })
    .bind('dragstart', function(e) { // And mousedown
        // Get ready to drag
    })
    .bind('drag', function(e) { // And mousemove when mousedown
        // Pan the image
    })
    .bind('dragend', function(e) { // And mouseup
        // Finish the drag
    });

এবং আপনি চালিয়ে যেতে পারেন। এটি ট্যাপ, ডাবল ট্যাপ, সোয়াইপ, হোল্ড, ট্রান্সফর্ম (যেমন, চিমটি) এবং টেনে আনতে সহায়তা করে। সমতুল্য মাউস ক্রিয়া সংঘটন হওয়ার সাথে সাথে স্পর্শ ইভেন্টগুলিও আগুন দেয়, সুতরাং আপনাকে ইভেন্ট হ্যান্ডলারের দুটি সেট লেখার দরকার নেই। ওহ, এবং আপনি jQueryish পদ্ধতিতে আমার মতো লিখতে সক্ষম হতে চাইলে আপনার jQuery প্লাগইন দরকার।


29
"সরলতম" সমাধানটি গ্রন্থাগার যুক্ত করে কোনও সমস্যা আরও জটিল করার সাথে জড়িত না
অক্টোপাস

13
@ অ্যাক্টপাস সবচেয়ে সহজ সমাধান হ্যামার.জেএস ব্যবহার করছে যা ক্রস ব্রাউজারের মাথা ব্যথা দূর করে। আপনার পরিচিত জোনে থাকতে jQuery এক্সটেনশনটি ব্যবহার করুন। আমার কাছে খুব জটিল মনে হচ্ছে না।
trusktr

1
গণ্য "সরল" সমাধানটি প্রায়শই এমন হয় যা লোকেরা সবচেয়ে বেশি ক্ষতিগ্রস্থ করে ... আপনি যা-ই করুন না কেন, তা নিশ্চিত করতে ভুলবেন না যে মাইক্রোসফ্ট সারফেসের মতো স্পর্শ এবং মাউস উভয় সমর্থন করে এমন ডিভাইসগুলিতে আপনার সমাধান কাজ করে
সিমোন_উইভার

1
@ অ্যাক্টপাস: "যখন আপনার সমস্ত হাতুড়ি [sic] ... সব কিছুই পেরেকের মতো দেখাচ্ছে" :)
কোডিং হয়েছে

এটা হামার সময়! এই লাইব্রেরিটি ভাগ করে নেওয়ার জন্য আপনাকে ধন্যবাদ, আমার অ্যাপ্লিকেশনটি ইনস্টল করা এবং চালানো সহজ হয়েছিল! সেটআপে সেকেন্ড নিয়েছিল কারণ ইভেন্ট হ্যান্ডলারটি আলাদা, তবে একটি সাধারণ কনসোল.লগ (ইভেন্ট) আপনাকে কী প্রয়োজন তা বলে দেয়। ধন্যবাদ!
অ্যান্ডি

24

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

$(document).on('touchstart', function() {
    detectTap = true; // Detects all touch events
});
$(document).on('touchmove', function() {
    detectTap = false; // Excludes the scroll events from touch events
});
$(document).on('click touchend', function(event) {
    if (event.type == "click") detectTap = true; // Detects click events
       if (detectTap){
          // Here you can write the function or codes you want to execute on tap

       }
 });

আমি এটি পরীক্ষা করেছি এবং এটি আইপ্যাড এবং আইফোনে আমার পক্ষে ভাল কাজ করে। এটি ট্যাপ সনাক্ত করে এবং সহজেই ট্যাপ এবং স্পর্শ স্ক্রোলটিকে আলাদা করতে পারে।


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

আমি প্রথমে jquery মোবাইল ব্যবহার করেছি, কিন্তু তারপরে এটি অন্যান্য কার্যকারিতার সাথে হস্তক্ষেপ করে। আমি এখন এটি ব্যবহার করছি এবং নিখুঁত কাজ করে। এখন পর্যন্ত কোনও সমস্যা নেই।
অনুরাগ প্রিয়দর্শী

18

আপনি একাধিক ইভেন্ট ক্যাপচার করতে .on () ব্যবহার করতে পারেন এবং তারপরে স্ক্রিনের স্পর্শের জন্য পরীক্ষা করতে পারেন, যেমন:

$('#selector')
.on('touchstart mousedown', function(e){
  e.preventDefault();
  var touch = e.touches[0];
  if(touch){
    // Do some stuff
  }
  else {
    // Do some other stuff
  }
});

ব্যতীত বাদ .bindদেওয়া হয়। আপনার ব্যবহার করা উচিত.on
jcuenod

15

jQuery কোর এর বিশেষ কিছু নেই তবে আপনি jQuery মোবাইল ইভেন্ট পৃষ্ঠাতে বিভিন্ন স্পর্শ ইভেন্টগুলি সম্পর্কে পড়তে পারেন যা আইওএস ডিভাইসগুলি ছাড়াও অন্যান্যগুলিতেও কাজ করে।

তারা হ'ল:

  • টোকা
  • taphold
  • সোয়াইপ
  • swipeleft
  • swiperight

এও লক্ষ করুন, স্ক্রোল ইভেন্টের সময় (মোবাইল ডিভাইসের স্পর্শের ভিত্তিতে) আইওএস ডিভাইসগুলি স্ক্রল করার সময় ডিওএম ম্যানিপুলেশনকে হিমশীতল করে।


আমার প্রশ্নের জন্য আপনার গুরুত্বপূর্ণ সময় দেওয়ার জন্য ধন্যবাদ। আমি জ্যাকুরি মোবাইল ইভেন্টগুলি সন্ধান করছি .. ধন্যবাদ
অভিষেক বি

এই ইভেন্টগুলি প্রকৃত স্পর্শ মিথস্ক্রিয়তার সত্যিকারের প্রতিনিধি নয়।
trusktr

JQuery কোর একটি প্রকৃত যথাযথ বিশেষ্য?
পিটার মর্টেনসেন

6

আমি আমার প্রকল্পের জন্য কেবল টাচমোভ ব্যবহার সম্পর্কে কিছুটা উদ্বিগ্ন ছিলাম , যেহেতু যখন আপনার স্পর্শটি এক অবস্থান থেকে অন্য স্থানে চলে আসে (এবং প্রাথমিক স্পর্শে নয়) তখন কেবল আগুন লাগে। তাই আমি এটি টাচস্টার্টের সাথে সংযুক্ত করেছি এবং এটি প্রাথমিক স্পর্শ এবং যে কোনও আন্দোলনের জন্য খুব ভালভাবে কাজ করে বলে মনে হচ্ছে।

<script>

function doTouch(e) {
    e.preventDefault();
    var touch = e.touches[0];

    document.getElementById("xtext").innerHTML = touch.pageX;
    document.getElementById("ytext").innerHTML = touch.pageY;   
}

document.addEventListener('touchstart', function(e) {doTouch(e);}, false);
document.addEventListener('touchmove', function(e) {doTouch(e);}, false);

</script>

X: <div id="xtext">0</div>
Y: <div id="ytext">0</div>

শেষ ইভেন্টের পরে কতটা সময় document.getElementById("ttime").innerHTML = ((new Date()) - touchTime); touchTime = new Date();
কেটে

3

আমি মাত্র বেনমজোরের গিটিহাব জিকুয়ারি টাচ ইভেন্ট ইভেন্ট প্লাগইন jQuery এর 1.4 এবং 1.7+ সংস্করণ উভয়ের জন্য পরীক্ষা করেছি tested এটি হালকা ওজনের এবং উভয়ের সাথে পুরোপুরি কাজ করে onএবং bindস্পর্শ ইভেন্টগুলির একটি বিস্তৃত সেটকে সহায়তা প্রদান করার সময়।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.