মাউস উইন্ডোটি ছেড়ে গেলে আমি কীভাবে সনাক্ত করতে পারি?


105

মাউস উইন্ডোটি ছেড়ে গেলে আমি সনাক্ত করতে সক্ষম হতে চাই যাতে ব্যবহারকারীর মাউস অন্য কোথাও থাকাকালীন ঘটনাগুলিকে গুলি চালানো থেকে থামাতে পারি।

এটি করার কোনও ধারণা?


4
এই বীকারের প্রস্থান-উদ্দেশ্য গিথুব লাইব্রেরিটি দেখুন। এটা দুর্দান্ত। github.com/beeker1121/exit-intent-popup
raksheetbhat

ব্যবহারের mouseleave সব উপাদান হিসাবে অগ্নিসংযোগ প্রতিরোধে mouseout : খুব ভালো ব্যাখ্যা এবং সহায়তা: না developer.mozilla.org/en-US/docs/Web/API/Element/...

দস্তাবেজে ইভেন্ট সেট করুন - দস্তাবেজ নয় - আগুনের স্ক্রোল-বার প্রতিরোধের জন্য কেউ নয়। উইন্ডোজ স্ক্রোলবারে মনে হচ্ছে শরীর সঙ্কুচিত হবে।

উত্তর:


100

দয়া করে মনে রাখবেন যে আমার উত্তরটির বয়স অনেক বেশি।

এইচটিএমএল পৃষ্ঠায় ড্রাগ-ড্রপ আচরণ বাস্তবায়নের সময় এই ধরণের আচরণটি সাধারণত পছন্দ হয়। এমএস উইন্ডোজ এক্সপি মেশিনে নীচের সমাধানটি IE 8.0.6, ফায়ারফক্স 3.6.6, অপেরা 10.53 এবং সাফারি 4 এ পরীক্ষা করা হয়েছিল।
প্রথমে পিটার-পল কোচের একটি ছোট্ট ফাংশন; ক্রস ব্রাউজার ইভেন্ট হ্যান্ডলার:

function addEvent(obj, evt, fn) {
    if (obj.addEventListener) {
        obj.addEventListener(evt, fn, false);
    }
    else if (obj.attachEvent) {
        obj.attachEvent("on" + evt, fn);
    }
}

এবং তারপরে নথির সাথে ইভেন্ট হ্যান্ডলার সংযুক্ত করতে এই পদ্ধতিটি ব্যবহার করুন মাউসআউট ইভেন্ট:

addEvent(document, "mouseout", function(e) {
    e = e ? e : window.event;
    var from = e.relatedTarget || e.toElement;
    if (!from || from.nodeName == "HTML") {
        // stop your drag event here
        // for now we can just use an alert
        alert("left window");
    }
});

অবশেষে, এখানে স্ক্রিপ্টটি ডিবাগিংয়ের জন্য এম্বেড থাকা এইচটিএমএল পৃষ্ঠা রয়েছে:

<html>
<head>
<script type="text/javascript">
function addEvent(obj, evt, fn) {
    if (obj.addEventListener) {
        obj.addEventListener(evt, fn, false);
    }
    else if (obj.attachEvent) {
        obj.attachEvent("on" + evt, fn);
    }
}
addEvent(window,"load",function(e) {
    addEvent(document, "mouseout", function(e) {
        e = e ? e : window.event;
        var from = e.relatedTarget || e.toElement;
        if (!from || from.nodeName == "HTML") {
            // stop your drag event here
            // for now we can just use an alert
            alert("left window");
        }
    });
});
</script>
</head>
<body></body>
</html>

উইন্ডো.ওভেন্ট ব্যবহার করে আমার এই ইভেন্টটি পেতে সমস্যা স্থির করে। ধন্যবাদ!
জয়

ক্রোমে মাউস টিপানো না হলে এটি আগুন লাগে না। ক্রোমে মাউস টিপলে এটি আগুন দেয়। অসামঞ্জস্যপূর্ণ আচরণ বলে মনে হচ্ছে।
antony.trupe

5
অন্যান্য এইচটিএমএল উপাদানগুলি উইন্ডোটি পূরণ করে থাকলে এটি কাজ করে না।
ইমানুয়েল

4
এই সমাধানটির সমস্যাটি হ'ল এটি বাম উইন্ডোটি সতর্ক করে এমনকি ব্যবহারকারী কেবল স্ক্রোলার ব্যবহার করার চেষ্টা করে। আমি এখানে এই সমস্যার সমাধান প্রকাশ করেছি , তবে এখনও একটি সমস্যা সমাধান করা দরকার (লিঙ্কটি দেখুন)।
জনিফ্রি

4
ডকুমেন্টের উপাদানগুলিতে আগুন রোধ করতে মাউসআউটের পরিবর্তে মাউসলেট ব্যবহার করুন । খুব ভাল ব্যাখ্যা এবং এটি আই 5.5 ... ডিভেলপার.মোজিলা.আর.ইন.ইউএস

44

আপনি যদি jQuery ব্যবহার করছেন তবে এই সংক্ষিপ্ত এবং মিষ্টি কোডটি সম্পর্কে কীভাবে -

$(document).mouseleave(function () {
    console.log('out');
});

আপনার ইচ্ছে মতো মাউস আপনার পৃষ্ঠায় না থাকলে এই ইভেন্টটি ট্রিগার করবে। আপনি যা চান তা করতে কেবল ফাংশনটি পরিবর্তন করুন।

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

$(document).mouseenter(function () {
    console.log('in');
});

ট্রিগার করতে যখন মাউস আবার পৃষ্ঠায় প্রবেশ করে।

সূত্র: https://stackoverflow.com/a/16029966/895724


মাউসলেভ কাজ করছে তবে এটিও লক্ষ্য করে গুলি চালাচ্ছে যদি তদন্তের উপাদানটি খোলা হয় তবে কীভাবে প্রতিরোধ করবেন? ধারণা?
পঙ্কজ ভার্মা

এই কৌশলটি ক্রোম 15 থেকে 56 (আমার বর্তমান সংস্করণ) এ স্থিতিশীল নয়। তবে এটি ফায়ারফক্সে খুব ইচ্ছা করে কাজ করে। দেখুন: stackoverflow.com/questions/7448468/...
Tremours

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

উইন্ডোটি ব্যাকগ্রাউন্ডে থাকলে (ব্রাউজারটি ফোকাস করা হয় না) এবং মাউস উইন্ডোতে প্রবেশ করে তবে এটিও জ্বলে উঠবে (ক্রোম 61 / macOS10.11)
কোডব্রায়ার

4
@ স্কিটস (এবং ভবিষ্যতের পাঠক) এই ইস্যুটি ফেব্রুয়ারী 14, 2019 হিসাবে চিহ্নিত হয়েছে
Xandor

27

এটি আমার পক্ষে কাজ করে:

addEvent(document, 'mouseout', function(evt) {
  if (evt.toElement == null && evt.relatedTarget == null) {
    alert("left window");
  }
});

9
কী addEvent?
ইয়ি জিয়াং


4
ie8-এ, সম্পর্কিত টার্গেটটি অপরিজ্ঞাত, আই 9 + এবং ফায়ারফক্সে, টু এলিমেন্ট অপরিজ্ঞাত। কারণ এটি, সঠিক মূল্যায়নটি হ'ল: যদি (evt.relatedTarget === নাল) || (evt.toElement === নাল)) car
কার্লোস

4
শিকারী আরও সংক্ষিপ্ত হতে পারেif (!evt.toElement && !evt.relatedTarget)
পাভেল ইয়ে

21

স্ক্রোল বার এবং স্বয়ংসম্পূর্ণ ক্ষেত্রটি বিবেচনা না করে বা পরিদর্শন না করে মাউসলেভ সনাক্ত করার জন্য:

document.addEventListener("mouseleave", function(event){

  if(event.clientY <= 0 || event.clientX <= 0 || (event.clientX >= window.innerWidth || event.clientY >= window.innerHeight))
  {

     console.log("I'm out");

  }
});

শর্তাবলী ব্যাখ্যা:

event.clientY <= 0  is when the mouse leave from the top
event.clientX <= 0  is when the mouse leave from the left
event.clientX >= window.innerWidth is when the mouse leave from the right
event.clientY >= window.innerHeight is when the mouse leave from the bottom

======================= সম্পাদনা ========================== ======

ডকুমেন্ট.এডএভেন্টলিস্টনার ("মাউসলেভ") নতুন ফায়ারফক্স সংস্করণে চালিত হয়নি বলে মনে হচ্ছে, মাউসলেভকে শরীরের মতো কোনও উপাদান বা একটি শিশু উপাদানের সাথে সংযুক্ত করা দরকার।

আমি পরিবর্তে ব্যবহার করার পরামর্শ দিই

document.body.addEventListener("mouseleave")

বা

window.addEventListener("mouseout")

সময়ে সময়ে বরখাস্ত করা হয় না। কার্সার মুভিং দ্বারা বিন্দু স্ট্রিমের এক বিন্দু স্ট্রিম যখন সীমানা লক্ষ্য করে এবং কার্সার আকার পরিবর্তন করে তখন এর মতো সিমগুলি ব্যর্থ হয়।
ইভান বোর্শচভ

@ ব্যবহারকারী 34791255, আপনি কি আমার স্নিপেটে এটি চেষ্টা করে দেখতে পারেন এবং যদি বিবৃতিটি যুক্ত না করা হয় তবে সমস্যাটি রয়ে গেছে কিনা? এটি অ্যাকাউন্টে স্ক্রোল বার লাগে তবে আমি স্ব-পরিপূর্ণ বা পরীক্ষার সাথে পরীক্ষা করিনি। stackoverflow.com/a/56678357/985399

7

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

<html onmouseleave="alert('You left!')"></html>

http://www.w3schools.com/jsref/event_onmouseleave.asp


কল্পনাপ্রসূত! সমর্থন হ'ল আই 5.5 + ... ... এছাড়াও কাজ করে: document.onmouseleave = function() { alert('You left!') };ডকুমেন্ট.একে ব্যবহার করবেন না যা শরীর সঙ্কুচিত করে এমন স্ক্রোল বারগুলিতে আগুন দেয়! উপাদানগুলিতে আগুন রোধে কোডের প্রয়োজন হয় না। ভাল ব্যাখ্যা: ডেভেলপার.মোজিলা.আর.ইন-

6

এই উত্তরগুলির কোনওোটাই আমার পক্ষে কাজ করেনি। আমি এখন ব্যবহার করছি:

document.addEventListener('dragleave', function(e){

    var top = e.pageY;
    var right = document.body.clientWidth - e.pageX;
    var bottom = document.body.clientHeight - e.pageY;
    var left = e.pageX;

    if(top < 10 || right < 20 || bottom < 10 || left < 10){
        console.log('Mouse has moved out of window');
    }

});

আমি এটি একটি ড্রাগ এবং ড্রপ ফাইল আপলোডকারী উইজেটের জন্য ব্যবহার করছি। এটি একেবারে সঠিক নয়, যখন মাউস উইন্ডোটির প্রান্ত থেকে একটি নির্দিষ্ট দূরত্বে পৌঁছে তখন ট্রিগার করা হয়।


আমি বিশ্বাস করি মাউস চলাচল "দ্রুত পর্যাপ্ত" হলে এটি কখনও কখনও ট্রিগার হয় না।
জন ওয়েইজ

@ জন ওয়েইজ হ্যাঁ, আমি মনে করি আপনি ঠিক বলেছেন right আমি এই স্ক্রিপ্টটি কিছু সময়ের জন্য ব্যবহার করেছি এবং এটি যদিও ভাল কাজ করে।
ইমানুয়েল

6

আমি উপরের সমস্ত চেষ্টা করেছি, তবে কিছুই প্রত্যাশিতভাবে কাজ করছে বলে মনে হচ্ছে না। একটু গবেষণা করার পর আমি দেখেছি যে e.relatedTarget হয় এইচটিএমএল শুধু সামনে মাউস জানালা প্রস্থান করে

সুতরাং ... আমি এটি দিয়ে শেষ করেছি:


document.body.addEventListener('mouseout', function(e) {
    if (e.relatedTarget === document.querySelector('html')) {
        console.log('We\'re OUT !');
    }
});

আপনি যদি কোন সমস্যা বা উন্নতি পান তবে দয়া করে আমাকে জানান!

2019 আপডেট

(ব্যবহারকারী হিসাবে 1084282 খুঁজে পেয়েছেন)

document.body.addEventListener('mouseout', function(e) {
    if (!e.relatedTarget && !e.toElement) {
        console.log('We\'re OUT !');
    }
});

4
ক্রোমে আমার জন্য কাজ করছে না। relatedTargetমাউস উইন্ডো ছেড়ে যখন নাল হয়। @ ব্যবহারকারী 1084282 এর উত্তরে অনুপ্রাণিত হয়ে এটিকে এটি পরিবর্তন করুন: if(!e.relatedTarget && !e.toElement) { ... }এবং এটি কাজ করে

আমি নিশ্চিত হয়েছি যে যদি আপনি if(!e.relatedTarget && !e.toElement)প্রকৃত উত্তরে শর্তের পরিবর্তে ব্যবহার করেন তবে এটি ক্রোম, ফায়ারফক্স এবং আই এজ এ সূক্ষ্মভাবে কাজ করে । এটি ডকুমেন্টের মূল অংশ মাউসটি সনাক্ত করে।
হাইজিরোম

ডকুমেন্টে কারওর সাথে ইভেন্টটি করবেন না কারণ উইন্ডোজ স্ক্রোলবার এটি সঙ্কুচিত করতে পারে এবং স্ক্রোলের সামনে আগুন দিতে পারে। যখন আপনার 'মাউসলেভ' থাকতে পারে তখন আপনার কেন এমন 'মাউসআউট' থাকে যা সমস্ত বুদবুদ উপাদানগুলিতে আগুন দেয়? বিকাশকারী.মোজিলা.আর.ইন-

2

আমি যা বলেছিলাম তা ফিরিয়ে নিই। এটা সম্ভব. আমি এই কোডটি লিখেছি, নিখুঁতভাবে কাজ করে।

window.onload = function() {

    $span = document.getElementById('text');

    window.onmouseout = function() {
        $span.innerHTML = "mouse out";  
    }

    window.onmousemove = function() {
        $span.innerHTML = "mouse in";   
    }

}

ক্রোম, ফায়ারফক্স, অপেরাতে কাজ করে। আইইন্ট পরীক্ষিত তবে ধরে নিন এটি কার্যকর হয়।

সম্পাদনা করুন IE সর্বদা সমস্যা সৃষ্টি করে। এটি IE এ কাজ করতে, উইন্ডো থেকে নথিতে ইভেন্টগুলি প্রতিস্থাপন করুন:

window.onload = function() {

    $span = document.getElementById('text');

    document.onmousemove = function() {
        $span.innerHTML = "mouse move";
    }

    document.onmouseout = function() {
        $span.innerHTML = "mouse out";
    }

}

তাদের ক্রসব্রোজার কিক গাধা কার্সার সনাক্তকরণের জন্য একত্র করুন: পি


আপনি কী পরীক্ষা করেছেন যে এটি পৃষ্ঠার উপাদানগুলির সাথে একসাথে কীভাবে কাজ করে? আমি ভাবব যে সমস্ত উপাদানগুলির নিজস্ব 'onmouseover / আউট' ইভেন্টগুলি সম্ভাব্যভাবে বুদবুদ বাতিল করতে পারে এবং এই কার্যকারিতাটি ভেঙে দিতে পারে।
ড্যান হারবার্ট

4
ওজি, ড্যান ব্যাখ্যা করার চেষ্টা করছেন যে কোনও উপাদান যা ইভেন্টের প্রচার বন্ধ করে দেয় তা ইভেন্টটিকে নথিতে / উইন্ডোতে পৌঁছাতে বাধা দেবে, যার ফলে আপনার সমাধানটিকে অকার্যকরভাবে উপস্থাপন করবে।
জেমস

আমি এটিকে অন্য উপাদানগুলির সাথে তাদের নিজের মাসউইভ এবং অনমাউসআউট ইভেন্টগুলির সাথে পরীক্ষা করেছি এবং এটি এখনও ঠিক কাজ করে।
ওজি

4
হ্যাঁ ঠিক আছে, তবে আমরা আবার ইভেন্টের প্রচারের কথা বলছি। আপনি যদি উদ্দেশ্যমূলকভাবে EVENT.stopPropagation () এর সাথে (IE, EVENT.cancelBubble = সত্য) দিয়ে ইভেন্টের প্রচার বন্ধ করে দেন তবে ডকুমেন্ট / উইন্ডোতে বুদবুদ হবে না ... এটির মোকাবিলা করার জন্য আপনি ব্রাউজারগুলিতে ইভেন্ট ক্যাপচার ব্যবহার করতে পারবেন এটি সমর্থন করে ।
জেমস

মনে রাখবেন যে জেএসে কোনও ভেরিয়েবল ঘোষণার জন্য আপনাকে অবশ্যই 'var' ব্যবহার করতে হবে। এখন পরিবর্তনশীল $ স্প্যান একটি অন্তর্নিহিত গ্লোবাল, যা সম্ভবত আপনি চান তা নয়। এছাড়াও যদি এটি উদ্দেশ্যমূলক না হয় তবে আপনার ভেরিয়েবলের নামের দরকার নেই।
জানি হার্টিকাইনেেন

2

এই সিএসএস প্রয়োগ:

html
{
height:100%;
}

এটি নিশ্চিত করে যে এইচটিএমএল উপাদানটি উইন্ডোর পুরো উচ্চতা গ্রহণ করে।

এই jquery প্রয়োগ করুন:

$("html").mouseleave(function(){
 alert('mouse out');
});

মাউসওভার এবং মাউসআউটের সমস্যাটি হ'ল আপনি যদি কোনও শিশু উপাদান থেকে এইচটিএমএল আউট / আউট করেন তবে এটি ইভেন্টটি সেট আপ করবে। আমি যে ক্রিয়াকলাপটি দিয়েছি তা কোনও সন্তানের উপাদানকে ছিটিয়ে দেওয়ার সময় সেট করা হয়নি । উইন্ডোটি মাউস আউট / ইন করলেই এটি সেট আপ করা হয়

কেবলমাত্র আপনার জানার জন্য আপনি যখন উইন্ডোতে ব্যবহারকারীর মাউসগুলি করতে পারেন এটি করতে পারেন:

$("html").mouseenter(function(){
  alert('mouse enter');
});

4
"আমি বিশ্বাস করি না জাভাস্ক্রিপ্টের একটি সমতুল্য ফাংশন রয়েছে", আপনার অর্থ, আপনি জানেন না যে jQuery একটি জাভাস্ক্রিপ্ট ফাংশন লাইব্রেরি এবং যে jQuery জাভাস্ক্রিপ্টের সাথে এবং জাভাস্ক্রিপ্টের জন্য লেখা?
মিলচে প্যাটার্ন

4
@ মিলচেপ্টার্ন আমি এই উত্তরটি প্রায় দুই বছর আগে লিখেছি। আমি তখন আরও অজ্ঞ ছিলাম এবং আমি বুঝতে পারিনি যে jQuery এ যা কিছু করা যায় তা খাঁটি জাভাস্ক্রিপ্টে করা যায়। আমি উত্তরটি আপডেট করব ...
www139

2

আমি একের পর এক চেষ্টা করেছিলাম এবং সেই সময়ে একটি সেরা উত্তর পেয়েছি:

https://stackoverflow.com/a/3187524/985399

আমি পুরানো ব্রাউজারগুলি এড়িয়ে চলেছি তাই আধুনিক ব্রাউজারগুলিতে কাজ করার জন্য কোডটি ছোট করে তুললাম (আই 9 +)

    document.addEventListener("mouseout", function(e) {
        let t = e.relatedTarget || e.toElement;
        if (!t || t.nodeName == "HTML") {
          console.log("left window");
        }
    });

document.write("<br><br>PROBLEM<br><br><div>Mouseout trigg on HTML elements</div>")

এখানে আপনি ব্রাউজার সমর্থন দেখতে পাবেন

আমি ভেবেছিলাম এটা খুব ছোট ছিল

তবে একটি সমস্যা এখনও থেকে যায় কারণ ডকুমেন্টের সমস্ত উপাদানগুলিতে "মাউসআউট" ট্রিগার করে

এটি থেকে রোধ করতে মাউসলিভ (আই 5.5 +) ব্যবহার করুন । লিঙ্কে ভাল ব্যাখ্যা দেখুন।

নীচের কোডটি উপাদানটির ভিতরে বা বাইরে থাকা উপাদানগুলির মধ্যে ট্রিগার না করে কাজ করে। ডকুমেন্টের বাইরেও টেনে আনার চেষ্টা করুন।

var x = 0

document.addEventListener("mouseleave", function(e) { console.log(x++) 
})

document.write("<br><br>SOLUTION<br><br><div>Mouseleave do not trigg on HTML elements</div>")

আপনি কোনও HTML উপাদানটিতে ইভেন্টটি সেট করতে পারেন। document.bodyযদিও ইভেন্টটি করবেন না , কারণ উইন্ডোজ স্ক্রোলবারটি যখন শরীরটি এবং আগুন সঙ্কুচিত করতে পারে যখন মাউস পয়েন্টারটি স্ক্রোল বারের নীচে থাকে আপনি যখন স্ক্রোল করতে চান তবে তার উপর একটি মাউসলাইভ ইভেন্টটি ট্রিগ করতে না চান। documentউদাহরণস্বরূপ, পরিবর্তে এটি সেট করুন ।


2

দেখুন mouseoverএবং mouseout

var demo = document.getElementById('demo');
document.addEventListener("mouseout", function(e){demo.innerHTML="😞";});
document.addEventListener("mouseover", function(e){demo.innerHTML="😊";});
div { font-size:80vmin; position:absolute;
      left:50%; top:50%; transform:translate(-50%,-50%); }
<div id='demo'>😐</div>


1

সম্ভবত আপনি যদি বডি টেগে অবিচ্ছিন্নভাবে অনউমসঅভারের কথা শুনছেন, তবে ইভেন্টটি যখন জনপ্রিয় হচ্ছে না তখন কলব্যাক, তবে জ্যাকের বক্তব্য অনুসারে এটি খুব কুরুচিপূর্ণ হতে পারে, কারণ সমস্ত ব্রাউজারগুলি একইভাবে ইভেন্টগুলি পরিচালনা করে না, এমন কি কিছু আছে একই পৃষ্ঠায় ডিভের উপর দিয়েও আপনি মাউসওভার হারাতে পারেন।


এটি কোনও উত্তর নয়

1

সম্ভবত এটি পরে যারা এখানে আসবে তাদের কয়েকটিকে সহায়তা করবে। window.onblurএবং document.mouseout

window.onblur ট্রিগার করা হয় যখন:

  • আপনি Ctrl+Tabবা অন্য ব্যবহার করে অন্য উইন্ডোতে স্যুইচ করুন Cmd+Tab
  • আপনি দস্তাবেজ পরিদর্শকের উপর ফোকাস (কেবল মাউসওভার নয়)।
  • আপনি ডেস্কটপগুলি স্যুইচ করুন।

মূলত যে কোনও সময় ব্রাউজার ট্যাব ফোকাস হারায়।

window.onblur = function(){
    console.log("Focus Out!")
}

document.mouseout ট্রিগার করা হয় যখন:

  • আপনি কার্সারটি শিরোনাম বারে সরিয়ে ফেলুন।
  • আপনি Ctrl+Tabবা অন্য ব্যবহার করে অন্য উইন্ডোতে স্যুইচ করুন Cmd+Tab
  • আপনি কর্সারটি ডকুমেন্ট ইন্সপেক্টরকে সরিয়ে নিয়ে যান।

মূলত যে কোনও ক্ষেত্রে যখন আপনার কার্সার নথিটি ছেড়ে দেয়।

document.onmouseleave = function(){
    console.log("Mouse Out!")
}

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

স্মার্ট window.onblurব্যবহারও। +1
রেডউল্ফ প্রোগ্রামগুলি

1
$(window).mouseleave(function(event) {
  if (event.toElement == null) {
    //Do something
  }
})

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



1

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

<script>
    var leave = 0
    //show modal when mouse off of page
    $("html").mouseleave(function() {
       //check for first time
       if (leave < 1) {
          modal.style.display = "block";
          leave = leave + 1;
       }
    });

    // Get the modal with id="id01"
       var modal = document.getElementById('id01');

    // When the user clicks anywhere outside of the modal, close it
       window.onclick = function(event) {
          if (event.target == modal) {
             modal.style.display = "none";
          }
       }
</script>

প্রশ্নের কোনও jQuery ট্যাগ ছিল না
mrRiiha

আধুনিক উত্তর ব্রাউজারগুলি আই 9 + এবং অন্যান্যতে কাজ করে আমার উত্তরের তুলনায় jQuery একটি প্রচুর কোড। এটা তোলে এই উত্তরে বেস কিন্তু অনেক খাটো হল: stackoverflow.com/a/3187524/985399

0

আমি এটি পরীক্ষা করেছি না, তবে আমার প্রবৃত্তিটি বডি ট্যাগে একটি অনমাউসআউট ফাংশন কল করা।


-2

এটি ক্রোমে কাজ করবে,

$(document).bind('dragleave', function (e) {
    if (e.originalEvent.clientX == 0){
        alert("left window");
    }
});
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.