javascript - tutorial - জাভাস্ক্রিপ্ট ফাংশন




জাভাস্ক্রিপ্ট ব্যবহার করে একটি মাউস ক্লিক করুন কিভাবে? (4)

আমি document.form.button.click() পদ্ধতি সম্পর্কে জানি। যাইহোক, আমি অনকল ঘটনা কিভাবে অনুকরণ করতে চান তা জানতে চাই।

আমি স্ট্যাক ওভারফ্লোে কোথাও এই কোডটি খুঁজে পেয়েছি, কিন্তু আমি কীভাবে এটি ব্যবহার করব তা জানি না :(

function contextMenuClick()
{
    var element= 'button'

    var evt = element.ownerDocument.createEvent('MouseEvents');

    evt.initMouseEvent('contextmenu', true, true,
         element.ownerDocument.defaultView, 1, 0, 0, 0, 0, false,
         false, false, false, 1, null);

    element.dispatchEvent(evt);
}

কিভাবে আমি জাভাস্ক্রিপ্ট ব্যবহার করে একটি মাউস ক্লিক ইভেন্ট আগুন?


(এটি prototype.js ছাড়া কাজ করতে সংশোধিত সংস্করণ)

function simulate(element, eventName)
{
    var options = extend(defaultOptions, arguments[2] || {});
    var oEvent, eventType = null;

    for (var name in eventMatchers)
    {
        if (eventMatchers[name].test(eventName)) { eventType = name; break; }
    }

    if (!eventType)
        throw new SyntaxError('Only HTMLEvents and MouseEvents interfaces are supported');

    if (document.createEvent)
    {
        oEvent = document.createEvent(eventType);
        if (eventType == 'HTMLEvents')
        {
            oEvent.initEvent(eventName, options.bubbles, options.cancelable);
        }
        else
        {
            oEvent.initMouseEvent(eventName, options.bubbles, options.cancelable, document.defaultView,
            options.button, options.pointerX, options.pointerY, options.pointerX, options.pointerY,
            options.ctrlKey, options.altKey, options.shiftKey, options.metaKey, options.button, element);
        }
        element.dispatchEvent(oEvent);
    }
    else
    {
        options.clientX = options.pointerX;
        options.clientY = options.pointerY;
        var evt = document.createEventObject();
        oEvent = extend(evt, options);
        element.fireEvent('on' + eventName, oEvent);
    }
    return element;
}

function extend(destination, source) {
    for (var property in source)
      destination[property] = source[property];
    return destination;
}

var eventMatchers = {
    'HTMLEvents': /^(?:load|unload|abort|error|select|change|submit|reset|focus|blur|resize|scroll)$/,
    'MouseEvents': /^(?:click|dblclick|mouse(?:down|up|over|move|out))$/
}
var defaultOptions = {
    pointerX: 0,
    pointerY: 0,
    button: 0,
    ctrlKey: false,
    altKey: false,
    shiftKey: false,
    metaKey: false,
    bubbles: true,
    cancelable: true
}

আপনি এটি ব্যবহার করতে পারেন:

simulate(document.getElementById("btn"), "click");

উল্লেখ্য যে একটি তৃতীয় প্যারামিটার হিসাবে আপনি 'বিকল্প' মধ্যে পাস করতে পারেন। আপনি যে অপশনগুলি নির্দিষ্ট করেন না তা ডিফল্ট অপশন থেকে নেওয়া হয় (স্ক্রিপ্টের নীচে দেখুন)। উদাহরণস্বরূপ আপনি যদি উদাহরণস্বরূপ মাউস সমন্বয় নির্দিষ্ট করতে চান তবে আপনি কিছু করতে পারেন:

simulate(document.getElementById("btn"), "click", { pointerX: 123, pointerY: 321 })

আপনি অন্য ডিফল্ট বিকল্পগুলি ওভাররাইড করার জন্য একই পদ্ধতি ব্যবহার করতে পারেন।

ক্রেডিট kangax যেতে হবে। Here মূল উৎস (prototype.js নির্দিষ্ট)।


একটি মাউস ক্লিক অনুকরণ করার জন্য একটি সহজ এবং আরো আদর্শ উপায় সরাসরি একটি ইভেন্ট তৈরি করতে এবং এটি প্রেরণ করতে ইভেন্ট কনস্ট্রাক্টার ব্যবহার করবে।

যদিও MouseEvent.initMouseEvent() পদ্ধতিটি পশ্চাদপট সামঞ্জস্যের জন্য রাখা হয় তবে মাউসইভেন্ট অবজেক্ট তৈরি করাটি MouseEvent() কনস্ট্রাকটর ব্যবহার করে করা উচিত।

var evt = new MouseEvent("click", {
    view: window,
    bubbles: true,
    cancelable: true,
    clientX: 20,
    /* whatever properties you want to give it */
});
targetElement.dispatchEvent(evt);

ডেমো: http://jsfiddle.net/DerekL/932wyok6/

এই সব আধুনিক ব্রাউজারে কাজ করে। IE সহ পুরানো ব্রাউজারগুলির জন্য, এটি MouseEvent.initMouseEvent() , MouseEvent.initMouseEvent() দুর্ভাগ্যবশত ব্যবহার করতে হবে।

var evt = document.createEvent("MouseEvents");
evt.initMouseEvent("click", canBubble, cancelable, view,
                   detail, screenX, screenY, clientX, clientY,
                   ctrlKey, altKey, shiftKey, metaKey,
                   button, relatedTarget);
targetElement.dispatchEvent(evt);

ডেরেকের উত্তরের উপর ভিত্তি করে, আমি যাচাই করেছিলাম

document.getElementById('testTarget')
  .dispatchEvent(new MouseEvent('click', {shiftKey: true}))

মূল modifiers সঙ্গে এমনকি প্রত্যাশিত হিসাবে কাজ করে। এবং এটি একটি অপ্রচলিত API নয়, যতদূর আমি দেখতে পারি। আপনি http://www.spookandpuff.com/examples/clickSimulation.html করতে পারেন।


মোজিলা ডেভেলপার নেটওয়ার্ক (MDN) ডকুমেন্টেশন থেকে, HTMLElement.click() আপনি যা খুঁজছেন তা। আপনি here আরো ঘটনা খুঁজে পেতে পারেন।






javascript-events