কীভাবে জাভাস্ক্রিপ্টের সাথে ক্লিক ক্লিক করুন?


290

আমি কেবল ভাবছি যে আমি কীভাবে একটি উপাদানটিতে ক্লিকের অনুকরণ করতে জাভাস্ক্রিপ্ট ব্যবহার করতে পারি।

বর্তমানে আমার আছে:

<script type="text/javascript">
function simulateClick(control)
{
    if (document.all)
    {
        control.click();
    }
    else
    {
        var evObj = document.createEvent('MouseEvents');
        evObj.initMouseEvent('click', true, true, window, 1, 12, 345, 7, 220, false, false, true, false, 0, null );
        control.dispatchEvent(evObj);
    }
}
</script>

<a href="http://www.google.com" id="mytest1">test 1</a><br>

<script type="text/javascript">
    simulateClick(document.getElementById('mytest1'));
</script>

তবে এটি কাজ করছে না :(

কোন ধারনা?


9
"পাঁচটি সর্বাধিক প্রচলিত কোডিং ত্রুটি": javascript.about.com/od/hintsandtips/a/worst_4.htm - এখন আর কেউ আইই 4 চালায় না এবং তাই ডকুমেন্টটির জন্য সমর্থন প্রয়োজন all সমস্ত ডিওএম আর দরকার নেই। যদিও এখনও কত লোক তাদের কোডিংয়ে এটি ব্যবহার করে তা অবাক করে দেয়। খারাপ document.all করে DOM যে সমর্থন প্রায়ই অর্ডার ব্রাউজার ব্যবহার করা হচ্ছে তা নির্ধারণ করতে এ জন্য পরীক্ষা করা হয় এবং এটি যদি তারপর সমর্থিত কোড ধরে নেয় যে ব্রাউজার Internet Explorer (যা সম্পূর্ণ ভুল ব্যবহার যেহেতু হয় হয় অপেরা এছাড়াও যে DOM স্বীকার) ।
জাফ

উত্তর:


416

আমি রান্না করেছি কি এখানে। এটি বেশ সহজ, তবে এটি কার্যকর:

function eventFire(el, etype){
  if (el.fireEvent) {
    el.fireEvent('on' + etype);
  } else {
    var evObj = document.createEvent('Events');
    evObj.initEvent(etype, true, false);
    el.dispatchEvent(evObj);
  }
}

ব্যবহার:

eventFire(document.getElementById('mytest1'), 'click');

12
@ অ্যান্ডারসন গ্রিন: আমি এই জিসফিডেলে একটি উদাহরণ যুক্ত করেছি: jsfiddle.net/KooiInc/W4BHD
KooiInc

4
প্রমাণ করুন যে এটি (ক্রোমিয়ামে) কাজ করে: +1 সহ document.querySelector('[value="2706236"]').nextSibling.nextSibling.dispatchEvent(ev);:)
প্রিফিশডয়ার্স

57
ঠিক আছে আমি আপনার জাভা-স্ক্রিপ্টটি ভোট আপ বোতামে চেষ্টা করেছি :) (অবশ্যই কাজ করেছেন)
0fnt

1
সঠিক ব্যবহারকারী আচরণ অনুকরণ করার জন্য, আপনাকে মোড়ানো উচিত dispatchEventবা clickসঙ্গে আমন্ত্রণ setTimeout, যেমন এটা মনে হয় যে dispatchEventহয় সমলয়
লেভ কাজাকভ

16
Event.initEventএখন অবচিত developer.mozilla.org/en/docs/Web/API/Event/initEvent
artnikpro

390

সাধারণ কিছু সম্পর্কে কি:

document.getElementById('elementID').click();

এমনকি IE দ্বারা সমর্থিত


@ হারমানইংজালডসন হ্যাঁ এটি আইই - এ পুরোপুরি কাজ করে - এমএসডিএন.মাইক্রোসফট /en-us/library/ie/ms536363%28v=vs.85%29.aspx
ড্যারেন

6
প্রশ্নটি ছিল "এটি কাজ করে কি তেমনি কাজ করে?" - উত্তর হ্যাঁ - আফাইক কমপক্ষে 8 এর নিচে, 7 টি পরীক্ষা করে
দেখেনি

24
এর আগে কি এর অস্তিত্ব ছিল না? ২০১০ এর উত্তরগুলি কেন এই সহজ সমাধানটির কথা উল্লেখ করেনি? শুধু জানতে আগ্রহী ...
পার্থ

3
@ নিনোকোপ্যাক ডেস্কটপের জন্য বর্তমানে দুর্দান্ত কাজ করে তবে মোবাইল ব্রাউজারগুলির সাথে কাজ করার কোনও গ্যারান্টি নেই। এমনকি মজিলা বিকাশকারী সাইট মোবাইল সমর্থন দেখায় না।
le0diaz

7
@ পার্থ সম্ভবত এটি করেছে, এটি কেবল তাদের জন্য ক্লিক করেনি ।
অ্যান্ড্রু

78

সমস্ত ব্রাউজার সনাক্তকরণ এড়াতে আপনি jQuery ব্যবহার বিবেচনা করেছেন? JQuery সহ, এটি এতটা সহজ হবে:

$("#mytest1").click();

21
এটি কেবল jQuery ইভেন্ট হ্যান্ডলারগুলিকে আগুন দেয়, ডিফল্ট আচরণ নয় (ব্রাউজার সেই ক্ষেত্রে হরেফের দিকে যায়)
রোমাল্ড ব্রুনেট

12
আমি দু: খিত সম্পর্কে জানি না তবে একই ব্রাউজার সনাক্তকরণের রুটিনগুলি বারবার পুনরায় রড করা না রাখাই সুবিধাজনক হতে পারে।
ব্র্যাডব্রেনিং

9
@ এরিকএইগনার: আমিও একই ভাবছিলাম, তবে খুশি যে এই ক্ষেত্রে গৃহীত উত্তরটি সরল জাভাস্ক্রিপ্ট, jQuery নয়। এসওতে এটি অনেক বার দেখা গেছে। আরও একবার: jQuery হ'ল জাভাস্ক্রিপ্ট, তবে জাভাস্ক্রিপ্ট jQuery নয়। যদিও আমি jQuery ব্যবহার করতে পছন্দ করি, আমি আরও বেশি করে দেখছি যে ডিভগুলি আসল সরল জিনিসটি বুঝতে পারে না। আমার 2 সেন্ট, মন্তব্য করতে প্রতিরোধ করতে পারেনি। ;)
স্যান্ডার

58
এমন অনেক মানুষ রয়েছে যে তাদের হাত দিয়ে কাপড় ধুতে হবে কিনা সেখান থেকে কীভাবে শুরু করতে হবে তা জানতেন না, কারণ বেশিরভাগ পরিবারেরই ধোয়া-ধোয়া থাকে এবং প্রায় বেশিরভাগেরই কাপড়ের ড্রায়ার রয়েছে। jQuery, অনেক আধুনিক সরঞ্জামগুলির মতো, একটি পুরানো কাজকে অনেক সহজ এবং কম ত্রুটির প্রবণ করেছে। এটি সবার জন্য সমাধান নয়, তবে ক্রস ব্রাউজারের সামঞ্জস্যপূর্ণ হওয়ার সময় আরও সংক্ষিপ্ত, বোধগম্য সিনট্যাক্স ব্যবহার করে প্রশ্নের সঠিক উত্তর দেওয়া এমন একটি উত্তরকে নিম্নচাপ দেওয়া যা পিছনের দিক থেকে মনে হয়। +1 টি।
FreeAsInBeer

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

18
var elem = document.getElementById('mytest1');

// Simulate clicking on the specified element.
triggerEvent( elem, 'click' );

/**
 * Trigger the specified event on the specified element.
 * @param  {Object} elem  the target element.
 * @param  {String} event the type of the event (e.g. 'click').
 */
function triggerEvent( elem, event ) {
  var clickEvent = new Event( event ); // Create the event.
  elem.dispatchEvent( clickEvent );    // Dispatch the event.
}

উল্লেখ


আমি বিশ্বাস করি আজকাল এটি সর্বোত্তম উত্তর হওয়া উচিত
ডেভিডটবম্যান

15

আপনি jQuery ব্যবহার করে নিজেকে একগুচ্ছ স্থান বাঁচাতে পারেন। আপনি কেবল ব্যবহার করতে হবে:

$('#myElement').trigger("click")

10
ওপি জাভাস্ক্রিপ্ট চেয়েছিল। যদিও এটি কমপ্যাক্ট এবং কার্যকরী, কিছু লোক jQuery এর মতো জিনিসের চেয়ে নো-লাইব্রেরি জেএস পছন্দ করে।
মৃতদেহ

43
Jquery ডাউনলোড করে স্থান সংরক্ষণ করবেন?
এমএইচ

9
কিছু লোক সমাবেশও পছন্দ করেন।
ড্যান নিসেনবাউম

@ এমএইচ আমি মনে করি আরও কার্যকর বৈধতা "এটি সহজ রাখা" হবে। এখানে আপনার ডিফল্ট প্রোফাইলটি প্রায় একই আকারের jQuery।
adelriosantiago

7

শীর্ষ উত্তরটি সেরা! তবে ফায়ারফক্সে যখন এটি আমার জন্য মাউসের ইভেন্টগুলি ট্রিগার করছিল না etype = 'click'

তাই, আমি পরিবর্তিত document.createEventকরার 'MouseEvents'এবং যে সমস্যা সংশোধন। অতিরিক্ত কোডটি পরীক্ষা করার জন্য অন্য একটি বিট কোড ইভেন্টে হস্তক্ষেপ করছে কিনা এবং তা যদি বাতিল করা হয় তবে আমি কনসোলে লগইন করব।

function eventFire(el, etype){
  if (el.fireEvent) {
    el.fireEvent('on' + etype);
  } else {
    var evObj = document.createEvent('MouseEvents');
    evObj.initEvent(etype, true, false);
    var canceled = !el.dispatchEvent(evObj);
    if (canceled) {
      // A handler called preventDefault.
      console.log("automatic click canceled");
    } else {
      // None of the handlers called preventDefault.
    } 
  }
}

-1
document.getElementById('elementId').dispatchEvent(new MouseEvent("click",{bubbles: true, cancellable: true}));

জাভাস্ক্রিপ্ট এবং ব্রাউজারের সামঞ্জস্যতা ব্যবহার করে মাউস ইভেন্টগুলি সম্পর্কে জানতে এই লিঙ্কটি অনুসরণ করুন Follow

https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent#Browser_compatibility

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