জাভাস্ক্রিপ্টে x, y স্থানাংক ব্যবহার করে কীভাবে একটি ক্লিকের অনুকরণ করবেন?


96

ওয়েবপৃষ্ঠায় জাভাস্ক্রিপ্টে ক্লিক ক্লিক করার জন্য কি প্রদত্ত স্থানাঙ্কগুলি ব্যবহার করা সম্ভব?


4
আপনার লক্ষ্য কি? :) আপনি উদাহরণস্বরূপ কোনও চিত্রের মানচিত্রে ক্লিক ক্লিক করার চেষ্টা করছেন?
নিক ক্র্যাভার

উত্তর:


151

আপনি ক্লিকের ইভেন্টটি প্রেরণ করতে পারেন , যদিও এটি আসল ক্লিকের মতো নয়। উদাহরণস্বরূপ, এটি ক্রস-ডোমেন iframe নথি ক্লিক করার ভেবে ভ্রান্ত করতে ব্যবহার করা যাবে না।

সমস্ত আধুনিক ব্রাউজার সমর্থন করে document.elementFromPointএবং HTMLElement.prototype.click()কমপক্ষে IE 6, ফায়ারফক্স 5, ক্রোমের যে কোনও সংস্করণ এবং সাফারির কোনও সংস্করণ সম্ভবত আপনার যত্ন নিতে পারে। এটি লিঙ্কগুলি অনুসরণ করে ফর্মগুলি জমা দেবে:

document.elementFromPoint(x, y).click();

https://developer.mozilla.org/En/DOM:docament.elementFromPoint https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/click


4
@ রেডিয়েন্টহেক্স: হ্যাঁ, বাস্তবে আইই প্রথম এটি প্রয়োগ করেছিলেন এবং এটি আইআই 6 এর দিকে ফিরে যায়। ক্রোম, ফায়ারফক্স এবং সাফারি 5 বাস্তবায়ন ঠিক আছে তবে সাফারি 4 এবং অপেরা ভুল (যদিও কার্যক্ষম)। Quirksmode.org/dom/w3c_cssom.html# ডকুমেন্টভিউ দেখুন ।
অ্যান্ডি ই

4
আমি এই আবিষ্কার সম্পর্কে খুব খুশি !! = ডি এখন অনেক কিছুই অসম্ভবকে সম্ভব বলে গণ্য করেছেন =) ... বা কমপক্ষে কম জটিল। ধন্যবাদ !!
RadiantHex

4
এটি l। লাইভ () ইভেন্টগুলির সাথে কাজ করে না বলে মনে হয় না, কেউ কীভাবে এটি l। লাইভ () দিয়ে তৈরি ইভেন্টগুলির সাথে কীভাবে কাজ করবে?
অ্যাকশনওল

4
@ অ্যান্ডি এটি এখন নিম্নলিখিত শর্তে কাজ করছে: আমার ওয়েবপৃষ্ঠা আছে, আমি আমার ডোমেনের চেয়ে অন্য ডোমেইন থেকে ইফ্রেম লোড করছি। এবং আমি iframe এলাকায় ক্লিক করতে চান। এ বিষয়ে আপনার কি কিছু সমাধান আছে?
পরীক্ষিত

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

67

হ্যাঁ, আপনি একটি ইভেন্ট তৈরি করে প্রেরণ করে মাউস ক্লিকের অনুকরণ করতে পারেন:

function click(x,y){
    var ev = document.createEvent("MouseEvent");
    var el = document.elementFromPoint(x,y);
    ev.initMouseEvent(
        "click",
        true /* bubble */, true /* cancelable */,
        window, null,
        x, y, 0, 0, /* coordinates */
        false, false, false, false, /* modifier keys */
        0 /*left*/, null
    );
    el.dispatchEvent(ev);
}

clickকোনও উপাদানটিতে পদ্ধতিটি ব্যবহার সম্পর্কে সতর্ক থাকুন - এটি ব্যাপকভাবে প্রয়োগ করা হলেও মানক নয় এবং উদাহরণস্বরূপ ফ্যান্টমজেএসে ব্যর্থ হবে। আমি ধরে নিয়েছি jQuery এর প্রয়োগটি .click()সঠিক কাজ করে তবে তা নিশ্চিত হয়নি।


একটি জগাখিচুড়ি থেকে আমাকে বাঁচিয়েছে। আমার প্রাথমিক পদ্ধতিটি ব্যর্থ হয়েছে তবে এটি একটি উদ্ধার করতে এসেছিল, ধন্যবাদ।
আইচুকস

4
jQuery ব্যবহার না করার জন্য প্লাস 1। গৃহীত উত্তর বিপরীত, এই এক করে প্রশ্নের উত্তর দিতে।
টমেকিবি

4
এটি jQuery এর চেয়ে অনেক বেশি শক্তিশালী$.click()
স্টিভেন লু

7
initMouseEvent
অবমুক্ত

4
অবহেলিত পরিবর্তে initMouseEventআপনি এটি ব্যবহার করতে পারেন var event = new MouseEvent( "click", { clientX: x, clientY: y, bubbles: true } )এটি স্ট্যাকওভারফ্লো . com/a/36144688/384670 এও দেখানো হয়েছে ।
এম কাটজ


0

এটি আমার পক্ষে কাজ করে না তবে এটি কনসোলে সঠিক উপাদানটি মুদ্রণ করে

এই কোড:

function click(x, y)
{
    var ev = new MouseEvent('click', {
        'view': window,
        'bubbles': true,
        'cancelable': true,
        'screenX': x,
        'screenY': y
    });

    var el = document.elementFromPoint(x, y);
    console.log(el); //print element to console
    el.dispatchEvent(ev);
}
click(400, 400);

-2

সুরক্ষার কারণে, আপনি জাভাস্ক্রিপ্টের সাহায্যে মাউস পয়েন্টারটি সরাতে পারবেন না, এটির সাথে ক্লিকের অনুকরণও করতে পারবেন না।

এটি আপনি কী সম্পাদন করার চেষ্টা করছেন?


@ আইকুল: আমাকে জানাতে ধন্যবাদ! আমি প্রশ্নের সাথে কিছুটা তথ্য যুক্ত করব। আমি কেবল পরীক্ষামূলক, সত্যিই উত্পাদনশীল কিছুই নয় =)
RadiantHex

4
ক্রোম এবং সাফারিতে, আপনি একটি নির্দিষ্ট এক্স, ওয়াই অবস্থানের উপর ক্লিক ক্লিক করতে পারেন। এই ডেমোটি কীভাবে কাজ করে। ফায়ারফক্স একমাত্র ব্রাউজার যেখানে এটি ব্যর্থ হয় তাই সম্ভবত এটি ফায়ারফক্স-নির্দিষ্ট সুরক্ষা নীতি।
thordan

সত্য নীচের উত্তরে রয়েছে, createEvent()+initMouseEvent()
ভ্যালার

4
আমার ক্ষেত্রে, পরীক্ষা।
জোসে নোবাইল

আপনি নির্দিষ্ট X / Y স্থানাঙ্কের সাথে একটি ক্লিক অবশ্যই সিমুলেট করতে পারেন, যদিও এটি ঠিক একইভাবে আচরণ করে না।
আগামেমনুস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.