একটি নির্দিষ্ট অবস্থানে মাউস পয়েন্টারটি সরান?


127

আমি একটি এইচটিএমএল 5 গেমটি তৈরি করছি এবং আমি একটি নির্দিষ্ট ইভেন্টের উপর একটি নির্দিষ্ট নিয়ন্ত্রণের উপর মাউস কার্সার রাখার চেষ্টা করছি যাতে একটি নির্দিষ্ট দিকের দিকে চলতে সর্বদা একই ফলাফল হয়। এটা কি সম্ভব?


যদি আমি সঠিকভাবে বুঝতে পারি তবে আপনি জেএস ব্যবহার করে মাউস কার্সারটি সরাতে চান - এটি সম্ভব নয়। আপনাকে অন্য কোনও উপায় খুঁজে বের করতে হবে।
ত্রিশডট

1
এইচটিএমএল 5 এর কিছু নতুন মাউস ইভেন্ট রয়েছে তবে মাউসটি সরানোর মতো কিছুই নেই। আপনি সর্বদা উইন্ডো.মোভবি (x, y) দ্বারা পারতেন; উইন্ডোটি নীচে নেওয়ার জন্য যেখানে মাউস ঘুরে বেড়ায় .. এটি একটি দুর্দান্ত ফানকি খেলা হতে পারে :) আমি যে ওঠাদক্সটি দেখি এটি সম্পন্ন হচ্ছে তা হল অ্যাক্টিভএক্স - ewwww, ইউক!
জেরেমি থম্পসন

1
না - জাভাস্ক্রিপ্ট আপনাকে এটি করতে দেবে না, তবে আমার ধারণা অনুমান করা যায় যে কোনও পৃষ্ঠা রয়েছে যা একটি নির্দিষ্ট জায়গায় সরিয়ে নিয়ে জড়িত থাকতে পারে, এতে উইন্ডো স্ক্রোলটিও ব্যবহার করে কার্সারটি "সরানো" হবে - ডাব্লু 3 স্কুলগুলি দেখুন এ w3schools.com/jsref/met_win_scrollto.asp
স্টারডাস্ট

1
স্মার্টফোনে মাউসটি সরিয়ে নেওয়ার জন্য শুভকামনা।
Cœur

মাউসপয়েন্টারের চিত্রটি প্রায় সরানো যায় এবং কার্সার সেট করা যায়: কিছুই নয়। এটি কোনও সুরক্ষা ঝুঁকি নয় কারণ আপনি প্রোগ্রামার। আপনি যদি কোনও গেম তৈরি করতে পারেন তবে আপনি যখন আপনার খেলা খেলছেন তখন আপনার ব্যাংক অ্যাকাউন্টে ক্লিক করার ঝুঁকিও এড়াতে পারবেন।

উত্তর:


20

সুতরাং, আমি জানি এটি একটি পুরানো বিষয়, তবে আমি প্রথমে বলব এটি সম্ভব নয়। নিকটতম জিনিসটি বর্তমানে মাউসটিকে একক অবস্থানে লক করছে এবং এর এক্স এবং y এর পরিবর্তন ট্র্যাক করছে। এই ধারণাটি গ্রহণ করেছে - দেখে মনে হচ্ছে - ক্রোম এবং ফায়ারফক্স। এটি মাউস লক নামে পরিচিত দ্বারা পরিচালিত হয় , এবং মারতে মারতে এটি ভেঙে যায়। আমার সংক্ষিপ্ত রিড-আপ থেকে, আমি মনে করি ধারণাটি হ'ল এটি মাউসটিকে একটি অবস্থানে লক করে এবং ক্লিক-এ-ড্রাগের ইভেন্টের মতো গতির ইভেন্টগুলি প্রতিবেদন করে।

এখানে প্রকাশের ডকুমেন্টেশন রয়েছে:
ফায়ারফক্স: https://developer.mozilla.org/en-US/docs/Web/API/Pointer_Lock_API
ক্রোম: http://www.chromium.org/developers/design-documents/mouse-lock

এবং এখানে একটি সুন্দর ঝরঝরে বিক্ষোভ: http://media.tojicode.com/q3bsp/


আমি এটিকে নতুন স্বীকৃত উত্তর হিসাবে নিচ্ছি, কারণ এটি হ'ল আমি যে ইউস-কেসের জন্য জিজ্ঞাসা করছিলাম, যদিও এটি সমস্ত ব্রাউজারে সমর্থিত নয়।
ডেন্কস্টার

187

আপনি জাভাস্ক্রিপ্ট দিয়ে মাউসপয়েন্টারটি সরাতে পারবেন না।

আপনি যদি পারতেন তবে কেবল এক সেকেন্ডের জন্যই এর প্রভাবগুলি সম্পর্কে চিন্তা করুন;)

  1. ব্যবহারকারী মনে করেন: "আরে আমি এই লিঙ্কটি ক্লিক করতে চাই"
  2. জাভাস্ক্রিপ্ট মাউসক্রসারকে অন্য লিঙ্কে নিয়ে যায়
  3. ব্যবহারকারী ভুল লিঙ্কটি ক্লিক করে এবং অজান্তেই ম্যালওয়্যার ডাউনলোড করে যা তার সি-ড্রাইভ ফর্ম্যাট করে এবং তার মিছরি খায়

74
বাস্তব ক্লিক জ্যাকিং।
ব্লেন্ডার

15
এটি ভাবার জন্য আসুন, এটি দুর্দান্ত হবে: পি
মার্টিন জেসপারসেন

24
হেই, আমি আমার মাউস কার্সারের উপর নিয়ন্ত্রণের জন্য লড়াই করতে ঘৃণা করব: আপনি বিজ্ঞাপন হিসাবে ফিরে আসুন, আমি যা বলছি তা ফিরে!
ব্লেন্ডার

78
কোনও ওয়েবপৃষ্ঠা একটি লিঙ্কে ক্লিক করার জন্য কাউকে ছাড়াই একটি ডাউনলোডকে বাধ্য করতে পারে, তাই আপনি যা দাবি করেন তা আসলে কোনও সুরক্ষা সমস্যা নয়। যদিও ওয়েবপৃষ্ঠা উইন্ডোর বাইরে চলে যেতে অক্ষম।
dionyziz

11
@ ডিওনিজিজ: জোর করে কোনও স্যান্ডবক্সে ডাউনলোড করা এবং তারপরে ইউজারস্পেসের মাধ্যমে ইউজারস্পেস ডাউনলোড শুরু করার মধ্যে বেশ বড় পার্থক্য রয়েছে। সুরক্ষার জড়িততা আসলে খুব বড়।
মার্টিন জেসপারসেন

88
  1. ক্লায়েন্ট মেশিনে একটি ছোট ওয়েব সার্ভার চালান। ছোট 100 কেবি জিনিস হতে পারে। একটি পাইথন / পার্ল স্ক্রিপ্ট ইত্যাদি
  2. একটি ছোট, প্রাক-সংকলিত সি এক্সিকিউটেবল অন্তর্ভুক্ত করুন যা মাউসটি সরাতে পারে।
  3. আপনি যে মাউন্ডারে সরাতে চান সেই স্থানাঙ্কগুলির সাথে, যেমন - সাধারণ পোস্ট কল, এজেএক্সের মাধ্যমে একে সিজিআই-স্ক্রিপ্ট হিসাবে চালান, যেমন:

    http://localhost:9876/cgi/mousemover?x=200&y=450

পিএস: যে কোনও সমস্যার জন্য, কেন এবং কীভাবে - এটি করা যায় না এবং করা উচিত নয় - সে সম্পর্কে শত শত অজুহাত রয়েছে তবে এই অসীম মহাবিশ্বে এটি সত্যই দৃ determination়সংকল্পের বিষয় - আপনি কিনা এটি ঘটবে।


13
আমি মনে করি "সি এক্সিকিউটেবল" না হওয়া পর্যন্ত আমরা সবাই বোর্ডে
ছিলাম

1
একটি ওয়েব সার্ভার? সম্ভবত আপনি একটি HTTP ইন্টারফেস সহ একটি প্রোগ্রাম বলতে চাই .. ওয়েব প্রয়োজন। গো প্রোগ্রামিং ল্যাঙ্গুয়েজ সি এর চেয়ে সুবিধাজনক হতে পারে যেহেতু HTTP অংশ যুক্ত করা সহজ হতে পারে, অথবা বিকল্পভাবে নোডেজ ইন্টারপ্রেটার এমন একটি কোড চালায় যা একটি সহজেই কোনও HTTP ইন্টারফেস অন্তর্ভুক্ত করতে পারে, কারণ নোডেজ ইন্টারপ্রেটারটি এটি সহজ করার জন্য তৈরি করা হয়েছিল সার্ভার অ্যাপ্লিকেশন লিখুন।
বার্লোপ

3
সি = 0 নির্ভরতা। ওয়েব হ'ল http। কোনও সুন্দর হোমপৃষ্ঠা নেই, এখানে .. কেবল পরিবহন।
অ্যালেক্স গ্রে

PS এর জন্য +1 আমরা নোড দেব-সার্ভার বা অনুরূপ কিছু এনএমপিজেএস . com/package/http -server ব্যবহার করে সিজিআই কলগুলি সম্পাদন করতে পারি ??
এথার

1
আপনারা কি কখনও Javascriptপ্রশ্নের নীচে ট্যাগটি লক্ষ্য করেছেন ?

80

আমি কল্পনা করবো আপনি যদি আসল (সিস্টেম) মাউস কার্সারটি ব্যবহার না করেন তবে আপনি পর্দার একটি নির্দিষ্ট অঞ্চলে মাউস কার্সার স্থাপন করতে সক্ষম হতে পারেন।

উদাহরণস্বরূপ, আপনি আপনার কার্সারের জায়গায় কাজ করার জন্য একটি চিত্র তৈরি করতে পারেন, এমন একটি ইভেন্ট পরিচালনা করতে পারেন যা আপনার দৃশ্যের মধ্যে মাউসেন্টার সনাক্ত করার পরে, সিস্টেম কার্সারে স্টাইলটি 'কিছুই না' ( sceneElement.style.cursor = 'none') হিসাবে সেট করে, তারপরে একটি লুকানো চিত্রের উপাদানটিকে সামনে আনতে পারে পূর্বনির্ধারিত অক্ষ / বাউন্ডিং বাক্স অনুবাদের উপর ভিত্তি করে দৃশ্যে আপনার পছন্দ মতো যে কোনও জায়গায় कर्सर হিসাবে।

আপনি আসল কার্সারটি কীভাবে সরিয়ে নিয়েছেন তা এইভাবেই নয় আপনার অনুবাদ পদ্ধতিটি আপনার চিত্রের কার্সারটিকে যেখানেই প্রয়োজন রাখবে।

সম্পাদনা: চিত্রের উপস্থাপনা এবং জোর করে মাউস চলাচল করে jsFizz এর একটি উদাহরণ


5
হ্যা, তুমি পারো. আপনি কেবল কোনও নির্দিষ্ট উপাদানের উপর কার্সার স্টাইলটি 'কিছুই নয়' তে সেট করেছেন। একবার চেষ্টা করে দেখো.
Xaxis

14
এটি সবচেয়ে চিন্তাশীল উত্তর। এবং প্রকৃতপক্ষে একটি আসল সমাধান সরবরাহ করে, যখন কিছু অন্যান্য উত্তর ডট সত্যিই কোনও মান যুক্ত করে :) তবে ওয়েবপ্লে কীভাবে এফপিএস ইত্যাদির মতো আকর্ষণীয় গেমগুলি আনবে যখন আমরা কোনও মাউস লক পেতে পারি না, এটি বেশ সীমাবদ্ধ মনে হয় ...
ডেনکشস্টার

3
এটি এখনও আপনার মাউসটি বাম দিকে "চালিয়ে" রাখতে সক্ষম না হওয়ায় সমস্যা রয়েছে। মাউস ওয়েবপৃষ্ঠাটি ছেড়ে গেলে আপনি এটি নিয়ন্ত্রণ করতে পারবেন না।
dionyziz

2
এটি এই সমস্যার একটি নিখুঁত সমাধান। লোকেরা অভিযোগ করার একমাত্র কারণ হ'ল এটি একটি তুচ্ছ সমাধান নয়। আপনাকে কিছু প্রোগ্রামিং করতে হয় মাঝে মাঝে!
মার্টি

5
এই ধারণাটি নিয়ে চারপাশে অভিনয় করেছেন এবং জেএসফিডেল jsfiddle.net/jaakkytt/9uczV
জাক ক্যাট

65

দুর্দান্ত প্রশ্ন। এটি জাভাস্ক্রিপ্ট ব্রাউজার এপিআই থেকে সত্যিই অনুপস্থিত। আমি আমার দলের সাথে একটি ওয়েবজিএল গেমটিতেও কাজ করছি এবং আমাদের এই বৈশিষ্ট্যটি প্রয়োজন need আমি ফায়ারফক্সের বাগজিলায় একটি ইস্যু খুলেছি যাতে মাউস লক করার অনুমতি দেওয়ার জন্য আমরা এপিআই থাকার সম্ভাবনা সম্পর্কে কথা বলতে পারি। এটি সমস্ত HTML5 / WebGL গেম ডেভেলপারদের জন্য কার্যকর হতে চলেছে।

আপনি যদি পছন্দ করেন তবে এসে আপনার প্রতিক্রিয়ার সাথে একটি মন্তব্য দিন, এবং বিষয়টি উত্সাহিত করুন:

https://bugzilla.mozilla.org/show_bug.cgi?id=630979

ধন্যবাদ!


9
আপডেট করুন: bugzilla.mozilla.org/show_bug.cgi?id=633602 এবং পয়েন্টার লক জন্য W3 বৈশিষ্ট: dvcs.w3.org/hg/pointerlock/raw-file/default/index.html
ক্রিস অ্যান্ডারসন

51
যদি এটি হয় তবে আমি ব্রাউজার ব্যবহার বন্ধ করব। :-P সিরিয়াসলি, ওয়েবসাইটগুলি যখন আপনি কোনও অ্যাপ্লিকেশন ইনস্টল করেন তখন আপনি যে ধরণের সম্মতি দিচ্ছেন তা প্রয়োজন হয় না। এটি দুর্দান্ত বৈশিষ্ট্য হবে যদি আমরা সমস্ত ভাল ছেলেরা ব্যবহারকারীর অভিজ্ঞতা উন্নত করতে এই স্তরের নিয়ন্ত্রণের নিয়োগ করি। দুর্ভাগ্যক্রমে ইন্টারনেট অ্যাসহল-সেন্ট্রাল, যার কারণেই অনেকগুলি ঝরঝরে বৈশিষ্ট্য রয়েছে যা আমরা আশা করি কখনই ব্রাউজারে দেখতে যাব না। বলা হচ্ছে: ফুলস্ক্রিন এপিআই বাকি ওএসের "লক আউট" করতে কাজ করবে।
কেউ

4
একটি অ্যাপ্লিকেশন (যেমন জনপ্রিয় ওয়েব ব্রাউজারগুলিতে এখন পুরো পর্দার সম্মতি অনুরোধ করা হয়েছে তেমন অনুরূপ) এর আগে লক সম্ভব হওয়ার আগে @ সুমোন সম্মতি অনুরোধ করা হবে। তদ্ব্যতীত, ব্যবহারকারী সর্বদা ESC কী টিপে সম্মতি বাতিল করতে পারেন can
dionyziz

7
এটা ঘটেছে. এবং এটি দুর্দান্ত দুর্দান্ত (যদি এখনও বিক্রেতার- উপসর্গযুক্ত থাকে
এরিকসোক

1
@ এরিকসোকো দুঃখজনকভাবে সেই লিঙ্কটি নষ্ট হয়ে গেছে। এটি সহায়তা করতে পারে: https://developer.mozilla.org/en-US/docs/Web/API/Pointer_Lock_API
তিয়ান ভ্যান হেরডেন

46

আপনি মাউস পয়েন্টারটির অবস্থান সনাক্ত করতে পারেন এবং তারপরে ওয়েব পৃষ্ঠাটি সরিয়ে ফেলতে পারেন (দেহের অবস্থানের তুলনায় আত্মীয়) যাতে তারা আপনাকে কী ক্লিক করতে চান তা নিয়ে তারা ঘোরাফেরা করে।

উদাহরণস্বরূপ আপনি এই কোডটি আপনার ব্রাউজার কনসোলে বর্তমান পৃষ্ঠায় পেস্ট করতে পারেন (এবং পরে রিফ্রেশ করুন)

var upvote_position = $('#answer-12878316').position();
$('body').mousemove(function (event) {
    $(this).css({
        position: 'relative',
        left: (event.pageX - upvote_position.left - 22) + 'px',
        top: (event.pageY - upvote_position.top - 35) + 'px'
    });        
});

2
আপনি যদি একটি কোড উদাহরণ পোস্ট করতে পারতেন তবে আপনার পোস্টটি আরও মূল্যবান হবে। : এছাড়াও, আমি তোমাকে পরামর্শ প্রায়শই জিজ্ঞাসিত প্রশ্নাবলী করার জন্য একটি চেহারা আছে stackoverflow.com/faq
ForceMagic

একবার ব্যবহারকারী ক্লিক করলে আপনি কীভাবে সঠিক উপাদানটিতে ক্লিক করতে পারেন?
মিমি

@ মোমোমো আপনি ব্যবহার করতে পারেনdocument.getElementByID('thingtoclick').click();
ক্যাসকেডিং-স্টাইল

1
এটাই ছিল পুরো স্টার! বক্সের বাইরে ভাববার উপায়! আমি সন্দেহ করি যে এটি সত্যই প্রশ্নকর্তা যা চেয়েছিলেন তা সরবরাহ করে তবে যতটা শীতল ছিল, কে সত্যিই যত্নশীল?
জিসিদেব

12

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

ছোট উদাহরণ:

var canvas = document.getElementById('mycanvas');
canvas.requestPointerLock = canvas.requestPointerLock || canvas.mozRequestPointerLock || canvas.webkitRequestPointerLock;
canvas.requestPointerLock();

ডকুমেন্টেশন এবং সম্পূর্ণ কোড উদাহরণ:

https://developer.mozilla.org/en-US/docs/Web/API/Pointer_Lock_API


4

জাভাস্ক্রিপ্ট ব্যবহার করে আপনি মাউস পয়েন্টারটি সরাতে পারবেন না এবং এইভাবে স্পষ্ট সুরক্ষার কারণে। এই প্রভাবটি অর্জনের সর্বোত্তম উপায় হ'ল নিয়ন্ত্রণটি মাউস পয়েন্টারের নীচে রাখা।


1
সুরক্ষা সম্পর্কিত প্রভাব সুস্পষ্ট থেকে অনেক দূরে। প্রকৃতপক্ষে, মানকগুলিতে সাম্প্রতিক সংযোজনগুলি কোনও গুরুতর সুরক্ষা সমস্যা ছাড়াই এই সক্ষমতার পরিচয় দেয়।
dionyziz

কিন্তু তারপরে কীভাবে এটি ড্রাগ এবং ড্রপ এপিআই তে সম্ভব?
ওল্ডবয়

0

মাউস পয়েন্টারটির আসল অবস্থান অর্জনের পরে এই ক্ষতিপূরণের ভিত্তিতে স্প্রাইট / দৃশ্যের মাউস ক্রিয়াগুলি গণনা করে এবং ক্ষতিপূরণ দিয়ে কেবল এটি করা যায়নি?

উদাহরণস্বরূপ আপনার নীচের কেন্দ্র হতে মাউস পয়েন্টার প্রয়োজন, তবে এটি উপরে বামে বসে; কার্সারটি লুকান, স্থানান্তরিত কার্সার চিত্রটি ব্যবহার করুন। পুনরায় অবস্থানযুক্ত কার্সার স্প্রাইটের (বা 'নিয়ন্ত্রণ') ক্লিকের সাথে মেলাতে কার্সার আন্দোলন এবং মানচিত্রের মাউস ইনপুটটি স্থানান্তর করুন / যখন সীমাগুলি আঘাত করা হয়, পুনরায় গণনা করুন। যদি / যখন কার্সারটি হ'ল বিন্দুটিকে আঘাত করে তবে আপনি ক্ষতিপূরণটি সরিয়ে ফেলুন।

দাবি অস্বীকার, গেম ডেভেলপার নয়।


মূলত জ্যাক্সিসের উত্তরের মতোই।
mathheadinclouds

@ মাথহেডইনক্লাউডস প্রকৃতপক্ষে, তবে মাউস-লকটি ব্রাউজার প্রয়োগের ক্ষেত্রে স্বাধীন। সুতরাং, মূলত; কিন্তু না. তোমার মতামত এর জন্য ধন্যবাদ. - সম্পাদিত: কিছু মনে করবেন না। আমি দেখছি আপনি কি বলছেন। আমি তখন অনুমান করি, আমার একমাত্র চিন্তা হবে, এটি এখানে অ-কার্যকর নয়। এক্সএক্সিস উত্তরের চেয়ে আরও সাধারণ লোক আছে is
এরিক শোবার্গ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.