क्या कोई पुष्टिकरण या अलर्ट बॉक्स प्रदर्शित होने पर पता लगाने के लिए जावास्क्रिप्ट या jQuery का उपयोग करने का कोई तरीका है?पता लगाएं कि किसी पृष्ठ पर एक चेतावनी या पुष्टि प्रदर्शित होती है
उत्तर
कोई नहीं है। आप जांच सकते हैं कि confirm
कमांड का वापसी मान वास्तव में true
या false
है लेकिन आप वहां जांच नहीं कर सकते कि वहां पर नजर है या नहीं।
ये चीजें ब्राउज़र का हिस्सा हैं जो डोम का हिस्सा नहीं है। मुझे यकीन है कि एक गंदे हैक है जो आईई के लिए काम करता है क्योंकि यह विंडोज ओएस का एक बेस्टर्डिज्ड बच्चा है।
इस तथ्य के लिए +1 कि आपका दूसरा अनुच्छेद लगभग निश्चित रूप से सत्य है। – Moses
@Moses मैं आपको विंडोज ओएस के लिए एक लिंक खोजने के लिए चुनौती देता हूं जो आपको एक्टिवली से जांचने की अनुमति देता है कि आईई – Raynos
में चेतावनी शारीरिक रूप से प्रदर्शित होती है, मैंने सोचा कि आपके उत्तरों के लिए धन्यवाद !! – Uggers2k
पुष्टि करें और चेतावनी बक्से घटनाओं को अवरुद्ध कर रहे हैं - ये प्रदर्शित होने पर जावास्क्रिप्ट कोड निष्पादन रोक दिया गया है। तो नहीं - जहां तक मुझे पता है कि कोई वर्तमान में प्रदर्शित नहीं हो रहा है, तो आप इसका पता नहीं लगा सकते हैं।
यह सच है कि वे यूआई थ्रेड को अवरुद्ध करते हैं, लेकिन इसका मतलब यह नहीं है कि आप इसे स्नीफ कर सकते हैं। –
आप एक alert()
आग, आप कुछ इस तरह की कोशिश कर सकते हैं जब कुछ कोड को चलाने के लिए चाहता था, तो:
मैं केवल क्रोम में परीक्षण किया है, इसलिए मैं ब्राउज़र समर्थन के बारे यकीन नहीं है।
उदाहरण:http://jsfiddle.net/Q785x/1/
(function() {
var _old_alert = window.alert;
window.alert = function() {
// run some code when the alert pops up
document.body.innerHTML += "<br>alerting";
_old_alert.apply(window,arguments);
// run some code after the alert
document.body.innerHTML += "<br>done alerting<br>";
};
})();
alert('hey');
alert('you');
alert('there');
बेशक
यह केवल आप पहले कोड चलाने के लिए और एक चेतावनी के बाद कर सकते हैं। जैसा कि @ कन्डर ने नोट किया है, चेतावनी प्रदर्शित होने पर जावास्क्रिप्ट निष्पादन रोक दिया गया है।
आप ऐसा कर सकता है यदि आप चाहते हैं ...
(function() {
// remember the normal alert
var oldAlert = (function(){ return this.alert; }()),
oldConfirm = (function(){ return this.confirm; }());
// inject ourself into the window.alert and window.confirm globals
alert = function (msg) {
oldAlert.call(document, msg);
document.onAlert(msg);
};
confirm = function (msg) {
var result = oldConfirm.call(document, msg);
document.onConfirm(msg, result);
return result;
};
// these just chill and listen for events
document.onAlert = function (msg) {
window.console && console.log('someone alerted: ' + msg);
};
document.onConfirm = function (msg) {
window.console && console.log('someone was asked: ' + msg);
window.console && console.log('and they answered: ' + (msg ? 'yes' : 'no'));
};
}());
इस के नकारात्मक पक्ष यह है कि
- आप एक ब्राउज़र (सामान के एक मेजबान विधि हैकिंग कर रहे हैं आप नहीं करना चाहिए आम तौर पर करते हैं - http://perfectionkills.com/whats-wrong-with-extending-the-dom/)
- आप बस अपने
alert()
confirm()
उपयोग के बेहतर ट्रैक रखते हुए किया जाना चाहिए, haha
यदि आप यह जानना चाहते हैं कि इन्हें अवरुद्ध किया जा रहा है या नहीं। आपको उस संदेश के साथ अपनी खुद की बात करनी होगी जो आप विवादित करेंगे लेकिन मूल चेतावनी/पुष्टि को ओवरराइड करें।
window.nativeAlert = window.alert;
window.alert = function (message) {
var timeBefore = new Date();
var confirmBool = nativeAlert(message);
var timeAfter = new Date();
if ((timeAfter - timeBefore) < 350) {
MySpecialDialog("You have alerts turned off, turn them back on or die!!!");
}
}
window.nativeConfirm = window.confirm;
window.confirm = function (message) {
var timeBefore = new Date();
var confirmBool = nativeConfirm(message);
var timeAfter = new Date();
if ((timeAfter - timeBefore) < 350) {
MySpecialDialog("You have alerts turned off, turn them back on or die!!!");
}
return confirmBool;
}
स्पष्ट रूप से मैंने समय 3.5 मिलीसेकंड निर्धारित किया है। लेकिन कुछ परीक्षणों के बाद हम लगभग 5 मिलीसेकंड्स के साथ संवाद को क्लिक या बंद करने में सक्षम थे और
पुष्टिकरण में() यदि समय सीमा बहुत कम है तो आप भी शून्य वापस कर सकते हैं; यह दोनों कॉलर्स द्वारा पता लगाया जा सकता है और साथ ही साथ अधिकांश सामान्य उपयोगों के लिए 'झूठी' लग रहा है। –
बहुत कम समय पर शून्य (या झूठी) पर वापसी को ओवरराइड करने से कोई भी समय-समय पर दुर्घटनात्मक ऑटो-पुष्टिकरण को रोकने में मदद कर सकता है जब कोई फ़ॉर्म पोस्ट सबमिट करता है लेकिन बहुत लंबे समय तक एंटर कुंजी दबाता है। –
यह एक बुरा विचार नहीं है, लेकिन मुझे उपयोगकर्ताओं के निर्णय को ओवरराइड करने की चिंता है, हो सकता है कि उन्हें पता चले कि वहां एक पुष्टि होगी। हालांकि मुझे ऐसा करने का लाभ दिखाई देता है क्योंकि ऐसा करने में यह एक छेड़छाड़ है। कोई भी जो प्रवेश कर सकता है वह विशेष संवाद को बंद कर देगा। लेकिन यह 99.9% समय काम करेगा। – DeadlyChambers
@ user113716 के उत्तर में जोड़ने के लिए आप समय पर भरोसा कर सकते हैं। मुझे लगता है कि अगर पुष्टि संवाद 200 एमएस से कम लेता है, तो यह ब्राउज़र द्वारा अवरुद्ध है। अगर पुष्टि संवाद अवरुद्ध है तो मैं सत्य वापस लौटाता हूं (डिफ़ॉल्ट रूप से यह झूठा लौटाता है, कोड टाइपस्क्रिप्ट में है)।
let oldConfirm = window.confirm;
window.confirm = (msg) => {
let time = new Date().getTime();
let conf = oldConfirm(msg);
return new Date().getTime() - time > 200 ? conf : true;
}
- 1. पता लगाएं कि सी #
- 2. पता लगाएं कि फोकसआउट किसी कुंजीपटल के कारण है या
- 3. पता लगाएं कि माउस पृष्ठ के शीर्ष पर jquery
- 4. पता लगाएं कि क्या UILocalNotification
- 5. पता लगाएं कि किसी सरणी में पूर्णांक या डबल
- 6. पता लगाएं कि हैश
- 7. पता लगाएं कि क्रैश या पावरफेलर
- 8. पता लगाएं कि स्ट्रिंग
- 9. पता लगाएं कि वर्तमान समय
- 10. पता लगाएं कि पाइथन
- 11. पता लगाएं कि किसी ऑब्जेक्ट द्वारा पाइथन
- 12. पता लगाएं कि फ़ाइल
- 13. पता लगाएं कि एंड्रॉइड
- 14. पता लगाएं कि कोई पृष्ठ आईफ्रेम के भीतर है - सर्वरसाइड
- 15. पता लगाएं कि Django
- 16. पता लगाएं कि ओएस एक्स
- 17. पता लगाएं कि यूआईएममेज पीएनजी या जेपीईजी है या नहीं?
- 18. पता लगाएं कि
- 19. पता लगाएं कि कोड
- 20. पता लगाएं कि UIScrollView
- 21. जावास्क्रिप्ट: पता लगाएं कि पृष्ठ को "वापस" ने
- 22. पता लगाएं कि माउस जावास्क्रिप्ट
- 23. पता लगाएं कि लिनक्स
- 24. पता लगाएं कि उपयोगकर्ता द्वारा
- 25. पता लगाएं कि फ्लैश एंड्रॉइड पर स्थापित है या एक गतिविधि में फ़्लैश वीडियो एम्बेड करें
- 26. पता लगाएं कि POSIX सिस्टम
- 27. पता लगाएं कि एक स्ट्रिंग Pig
- 28. पता लगाएं कि किसी वेब पेज में जावास्क्रिप्ट रीडायरेक्ट
- 29. पता लगाएं कि सार्वजनिक आईपी पता गतिशील या स्थैतिक
- 30. पता लगाएं कि इनपुट में 'रीडोनली' विशेषता
वास्तव में "प्रदर्शित होने" का क्या मतलब है? क्या आपका मतलब है कि कोड में कमांड का संदर्भ है या नहीं? –
वेब श्रमिकों के साथ आप ... –
@ सिमविडास बताते हैं कि कैसे? – Raynos