জাভাস্ক্রিপ্টে কখন এবং কেন 'মিথ্যা প্রত্যাবর্তন' করবেন?


উত্তর:


88

প্রায়শই ইভেন্ট হ্যান্ডলারগুলিতে যেমন onsubmitমিথ্যা ফিরানো ঘটনাটিকে আগুন না দেওয়ার কথা বলার একটি উপায়। সুতরাং, বলুন, onsubmitক্ষেত্রে, এর অর্থ এই হবে যে ফর্মটি জমা দেওয়া হয়নি।


10
এটি বিশেষত ভাল যদি আপনি একটি এজ্যাক্স ফর্ম চান যা পৃষ্ঠাটি পুনরায় লোড না করে জমা দেয় - তবে জাভাস্ক্রিপ্ট উপলব্ধ না থাকলে পৃষ্ঠা জমা দেওয়ার ও পুনরায় লোড করে কাজ করে।
ডিন

10
ইভেন্ট হ্যান্ডলারগুলি তৈরি করার সময় ডিফল্ট ক্রিয়া প্রতিরোধের জন্য রিট রিয়াট আসলে ওভারকিল হয় এবং ভঙ্গুর কোড হতে পারে। ডগলাস নিনারের পোস্টে ব্যাখ্যা এবং উদাহরণগুলি এখানে fuelyourcoding.com/jquery-events-stop-misusing-return-false
মার্কুইস ওয়াং

3
JQuery সহ, event.preventDefault()এই কার্যকারিতাটির জন্য এটি ব্যবহার করা আরও ভাল । আমি বিশ্বাস করি যে মিথ্যা ফিরিয়ে দেওয়া হ্রাস করা হয়েছে এবং সর্বদা আর কাজ করে না।
onwwunchunch

1
কখনও কখনও return falseপদ্ধতিতে হয়, এটি কিছু পরিবর্তন করে?
ফ্রান্সিসকো করলালেস মোরেলস

@ ইউনটওয়ুপঞ্চ আসলে যখন আমি এটিকে পরিবর্তন করে e.preventDefault () এ নামস্থান স্পর্শ ইভেন্টের উপর ভিত্তি করে আমার একটি ফাংশন দিয়ে সমস্যার সমাধান করেছি। কেন জানি না তবে আপনি আমাকে ধারণাটি দিয়েছিলেন। ধন্যবাদ।
গারাভানি

69

আমি অনুমান করছি যে আপনি এই বিষয়টি উল্লেখ করছেন যে আপনাকে প্রায়শই 'মিথ্যা ফেরত' দিতে হয়; আপনার ইভেন্ট হ্যান্ডলারগুলিতে বিবৃতি, যেমন

<a href="#" onclick="doSomeFunction(); return false;">...

'প্রত্যাবর্তন মিথ্যা;' এই ক্ষেত্রে ব্রাউজারটি বর্তমান অবস্থানে ঝাঁপ দেওয়া থেকে থামায়, যেমন href = "#" দ্বারা নির্দেশিত - পরিবর্তে কেবলমাত্র doSomeFunction () সম্পাদন করা হয়। এটি যখন আপনি অ্যাঙ্কর ট্যাগগুলিতে ইভেন্টগুলি যুক্ত করতে চান তার জন্য দরকারী তবে ব্রাউজারটি প্রতিটি ক্লিকের প্রতিটি অ্যাঙ্কারে ঝাঁপিয়ে উঠতে চায় না


3
অবশ্যই, 'href = "#"' খারাপ অনুশীলন, তবে আপনার সামগ্রিক বক্তব্যটি এখনও দাঁড়িয়ে আছে :-)
ববি জ্যাক

4
@ ভোলআরন: বিকল্পটি একটি আসল ইউআরএল যা জাভাস্ক্রিপ্টবিহীন লোকদের জন্য বিকল্প হিসাবে কাজ করে। অন্যথায়, তারা কিছুই ঘটবে না এমন একটি লিঙ্কে ক্লিক করবে।
ববি জ্যাক

3
@ ভোলআরন: অবশ্যই, তারা প্রতিটি সম্ভাব্য ব্যবহারকারী বেস কতটা পূরণ করতে চায় তা নির্ধারণ করার জন্য এটি প্রতিটি বিকাশকারী (বা সাইটের মালিক) এর নিচে। এই জাতীয় ক্ষেত্রে, তবে, যেখানে আরও বেশি লোককে টার্গেট করা বিকল্পটি খুব সহজ, আপনি কেন এটি বেছে নেবেন না তা আমি দেখতে পাচ্ছি না। এছাড়াও, মনে রাখবেন যে এটি কেবল লোকেরা স্পষ্টভাবে জাভাস্ক্রিপ্ট অক্ষম করার বিষয়ে নয়; এটি হতে পারে: অন্য কেউ তাদের উপর এই সিদ্ধান্ত চাপিয়ে দিচ্ছে, জেএস ফাইল ডাউনলোড করার ক্ষেত্রে একটি নেটওয়ার্ক সমস্যা, জেএসের এক লাইনে একটি বাগ যা এটিকে সমস্ত ব্যর্থ করে দেয়। এছাড়াও, নতুন ট্যাবে ডান-ক্লিক-> খোলার কাজ করা এখনও বেশ চমৎকার।
ববি জ্যাক

এটি ব্যবহারকারীর 1% এর চেয়ে কম নয়। অনেকে কোনও কারণে নোস্ক্রিপ্টের মতো এক্সটেনশন ব্যবহার করেন। জাভাস্ক্রিপ্টের মতো জিনিসগুলি উদ্দেশ্যমূলকভাবে বন্ধ করা।
সেপিরো

@ ভোলআরন বিবেচনা করার মতো অন্যান্য পরিস্থিতিটি হ'ল "জাভাস্ক্রিপ্ট ব্রেক" যখন (পৃষ্ঠায় একটি বাক্য গঠন ত্রুটির কারণে)। নন-জেএস ফ্যালব্যাকস থাকা আপনাকে এই দৃশ্যের জন্য কিছু সুরক্ষা জাল দেয়। (
গুগল.কম একটি জেএস

28

এটি ইভেন্টটির প্রচার বন্ধ করতে ব্যবহৃত হয় । আপনি যখন ক্লিক ইভেন্ট হ্যান্ডলারের সাথে দুটি উপাদান রাখেন (উদাহরণস্বরূপ)

-----------------------------------
| element1                        |
|   -------------------------     |
|   |element2               |     |
|   -------------------------     |
|                                 |
-----------------------------------

আপনি যদি অভ্যন্তরীণ উপাদান (এলিমেন্ট 2) এ ক্লিক করেন তবে এটি উভয় উপাদান: 1 এবং 2 তে একটি ইভেন্ট ইভেন্টকে ট্রিগার করবে It এটিকে "ইভেন্ট বুদবুদ" বলা হয়। যদি আপনি ইভেন্টটি কেবল এলিমেন্ট 2 এ পরিচালনা করতে চান তবে ইভেন্টের প্রচারককে ইভেন্টের প্রচার বন্ধ করতে মিথ্যা ফিরিয়ে দিতে হবে।

আর একটি উদাহরণ লিঙ্ক অনক্লিক হ্যান্ডলার হবে। আপনি যদি একটি লিঙ্ক ফর্ম কাজ বন্ধ করতে চান। আপনি একটি অন্লিক হ্যান্ডলার যুক্ত করতে পারেন এবং মিথ্যা ফিরে আসতে পারেন। ইভেন্টটিকে ডিফল্ট হ্যান্ডলারের প্রচার থেকে থামাতে।


9
এই উত্তরের প্রথম অংশটি ভুল: falseইভেন্ট হ্যান্ডলার থেকে ফিরে আসা কোনও ইভেন্টের সাথে যুক্ত ডিফল্ট ক্রিয়াকে আটকাবে; আপনি কল event.preventDefault()বা সেটিং event.returnValue = false(আইই) এর মাধ্যমে এটিও করতে পারেন ; ঘটনাটি বুদবুদ হওয়া থেকে বিরত রাখতে, আপনাকে কল করতে হবে event.stopPropagation()বা সেটিং করতে হবে event.cancelBubble = true(আইই)
ক্রিস্টোফ

18

এর ... কীভাবে বুলিয়ান ফাংশনটিতে 'সত্য নয়' নির্দেশ করতে হবে?


4
ফাইলনটফাউন্ডের কী হবে?
নিকফ

এমনকি ফাইলনটফাউন্ডে মিথ্যা এখনও সত্য নয় কি না?
গ্লেব

2
গ্লেব: "ফাইলনটফাউন্ডে" নেই, এটি একটি রসিকতা হিসাবে টিডিডব্লিউটিএফ: thedailywtf.com/Articles/What_Is_Truth_0x3f_.aspx
ক্রিস জেস্টার-ইয়ং

12

"জেএস, অনুসন্ধান করার পরে আমি 'মিথ্যা ফেরত' ব্যবহার করার পরেও এই পৃষ্ঠায় এসেছি; অন্যান্য অনুসন্ধানের ফলাফলগুলির মধ্যে একটি পৃষ্ঠা ছিল যা আমি ক্রিস কোয়ারের সিএসএস-ট্রিক্স সাইটে আরও কার্যকর এবং সোজা বলে খুঁজে পেয়েছি: 'মিথ্যা প্রত্যাবর্তন' এর মধ্যে পার্থক্য; এবং 'e.preventDefault ();'

তাঁর নিবন্ধের সংক্ষেপটি হ'ল:

ফাংশন () false মিথ্যা প্রত্যাবর্তন; }

// সমান

ফাংশন (ঙ)। ই.প্রিভেডেন্ট ডিফল্ট (); e.stopPropagation (); }

যদিও আমি এখনও পুরো নিবন্ধটি পড়ার সুপারিশ করব।

আপডেট: রিটার্ন মিথ্যা ব্যবহারের যোগ্যতার সাথে তর্ক করার পরে; e.preventDefault () এর প্রতিস্থাপন হিসাবে; & e.stopPropagation (); আমার সহকর্মীদের এক নির্দিষ্ট যে ফিরতি মিথ্যা নামেও এই প্রবন্ধে রূপরেখা কলব্যাক সঞ্চালনের স্টপ,: jQuery এর ঘটনাবলী: স্টপ (MIS) রিটার্ন মিথ্যা ব্যবহার


আমি কিছু কোড পরীক্ষা যে পরে এখানে লক্ষ্য করা আছে: মধ্যে jQuery , function() { return false; }সমান IS function(e) { e.preventDefault(); e.stopPropagation(); }কিন্তু বিশুদ্ধ JS, এটা একই নয়, function() { return false; }সমান IS function(e) { e.preventDefault(); }আসলে। এটি প্রচার বন্ধ করে না
স্কুরাজেড

6

JQuery এর eachফাংশন ব্যবহার করার সময় , সত্য বা মিথ্যা প্রত্যাবর্তনের অর্থ রয়েছে। দেখুনডকটি


3

আমি মনে করি আরও ভাল প্রশ্ন, আপনি যদি রিটার্ন মানগুলির বুলিয়ান সেটটি মূল্যায়ন করেন তবে কেন আপনি সত্য / মিথ্যা ব্যবহার করবেন না ? আমি বলতে চাইছি আপনি সম্ভবত সত্য / নাল, সত্য / -1, অন্যান্য মিসক থাকতে পারেন। জাভাস্ক্রিপ্ট "মিথ্যা" বিকল্পের মান, কিন্তু আপনি কেন এটি করবেন?


1

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


1

কোনও কিছু ঘটতে না হতে আপনি রিটার্ন মিথ্যা ব্যবহার করেন। সুতরাং আপনার যদি জমাতে কোনও স্ক্রিপ্ট থাকে তবে মিথ্যা ফেরত জমা দেওয়ার কাজটি আটকাবে।


1

কোনও ফাংশনে রিটার্ন স্টেটমেন্ট আহ্বান করা হলে এই ফাংশনটির সম্পাদন বন্ধ হয়ে যায়। যদি নির্দিষ্ট করা থাকে তবে একটি প্রদত্ত মান ফাংশন কলারের কাছে ফিরে আসে। যদি অভিব্যক্তি বাদ দেওয়া হয় তবে পরিবর্তে অপরিবর্তিত ফিরে আসে।

আরও তথ্যের জন্য MDN ডক্স পৃষ্ঠাটি একবার দেখুনreturn


1

যদি আপনার ফাংশনে কিছু পরিশ্রুত থাকে (কিছু পরীক্ষার মাধ্যমে) বা আপনি কিছু ফাংশন বন্ধ করতে চান তবে মিথ্যা প্রত্যাখ্যান করুন, উদাহরণস্বরূপ "অনসামিত" এর জন্য মিথ্যা প্রত্যাবর্তন করুন


1

এছাড়াও, এই ছোট এবং আকর্ষণীয় লিঙ্কটি https://www.w3schools.com/jsref/event_preventdefault.asp এর মাধ্যমে পড়তে হবে

সংজ্ঞা এবং ব্যবহার

ক্যানউশনাল ডিফল্ট () পদ্ধতিটি ইভেন্টটি বাতিল হলে এটি বাতিল করে দেয়, অর্থাত্ ইভেন্টটির সাথে সম্পর্কিত ডিফল্ট ক্রিয়াটি ঘটবে না।

উদাহরণস্বরূপ, এটি কার্যকর হতে পারে যখন:

Clicking on a "Submit" button, prevent it from submitting a form
Clicking on a link, prevent the link from following the URL

দ্রষ্টব্য: সমস্ত ইভেন্টই বাতিলযোগ্য নয়। কোনও ইভেন্ট বাতিলযোগ্য কিনা তা জানতে বাতিলযোগ্য সম্পত্তিটি ব্যবহার করুন।

দ্রষ্টব্য: প্রতিরোধক ডিফল্ট () পদ্ধতিটি ডিওএমের মাধ্যমে কোনও ইভেন্টের আরও বিস্তার রোধ করে না। এটি হ্যান্ডল করার জন্য স্টপপ্রোপেশন () পদ্ধতিটি ব্যবহার করুন।


বিরোধী ডাব্লু 3 স্কুলগুলিতে ডেভেলপার.মোজিলা.আর.ইন- ইউএস / ডকস / ওয়েবে / এপিআই / এভেন্ট / প্রিভেন্ট ডেফল্ট ব্যবহার করুন বিবেচনা করুন । তবে শক্ত উত্তর।
বাইবার্তি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.