"জাভাস্ক্রিপ্ট: অকার্যকর (0)" এর অর্থ কী?


1378
<a href="javascript:void(0)" id="loginlink">login</a>

আমি এরকম hrefঅনেকবার দেখেছি , তবে এর সঠিক অর্থ কী তা আমি জানি না।


12
javascript:অনেকগুলি ইউআরআই স্কিমগুলির মধ্যে একটি: এন.ইউইকপিডিয়াআর.জিdata: . / উইকি / ইউআর_স্কেম , পছন্দ ।
সিরো সান্তিলি 冠状 病毒 审查 六四 事件 法轮功

3
আপনি কেবল href="javascript:"একই উদ্দেশ্যে ব্যবহার করতে পারেন । এই প্রশ্নের উত্তরে বর্ণিত হিসাবে , void(0)অংশটি মূলত ব্রাউজারগুলির প্রাথমিক সংস্করণগুলির জন্য তৈরি হয়েছিল যেখানে javascript:ইউআরআই হ্যান্ডলিং আলাদা ছিল। তবে এখন আমি এমন কোনও সংস্করণও পাইনি যেখানে শর্টহ্যান্ড কাজ করবে না, অন্তত আই 7 এটি সঠিকভাবে পরিচালনা করে।
ব্যবহারকারী

1
আমি href = "জাভাস্ক্রিপ্ট: //" দেখেছি, এটি কি আরও ভাল?
লাইটসবার

href = "জাভাস্ক্রিপ্ট: //" আমার পক্ষে কাজ করছে না শূন্য (0) পুরোপুরি কাজ করে।
সন্দীপ

উত্তর:


1039

voidঅপারেটর প্রদত্ত অভিব্যক্তি এবং তারপর আয় মূল্যায়ণ undefined

voidঅপারেটর প্রায়ই প্রাপ্ত নিছক ব্যবহার করা হয় undefinedআদিম মান, সাধারণত ব্যবহার " void(0)" (যা সমতূল্য " void 0")। এই ক্ষেত্রে, বিশ্বব্যাপী পরিবর্তনশীল undefined পরিবর্তে ব্যবহার করা যেতে পারে (ধরে নিলে এটি একটি ডিফল্ট মানকে বরাদ্দ করা হয়নি)।

এখানে একটি ব্যাখ্যা সরবরাহ করা হয়েছে: voidঅপারেটর

আপনি যে hrefকোনও লিঙ্কটির সাহায্যে এটি করতে চাইছেন তা হ'ল সাধারণত, একটি javascript:URL ব্রাউজারটিকে সেই জাভাস্ক্রিপ্ট মূল্যায়নের ফলাফলের একটি সাধারণ পাঠ্য সংস্করণে পুনর্নির্দেশ করবে। তবে ফলাফল যদি হয় undefinedতবে ব্রাউজারটি একই পৃষ্ঠায় থাকে। void(0)এটি একটি সংক্ষিপ্ত এবং সাধারণ স্ক্রিপ্ট যা মূল্যায়ন করে undefined


9
যখন href কে "অপরিজ্ঞাত আদিম মান" দেওয়া হয় তখন এর অর্থ কী?
ওমগ

7
"সাধারণত একটি জাভাস্ক্রিপ্ট: ইউআরএল ব্রাউজারটিকে সেই জাভাস্ক্রিপ্ট মূল্যায়নের ফলাফলের একটি সরল পাঠ্য সংস্করণে পুনর্নির্দেশ করবে" "আপনি কি এখানে উদাহরণ তৈরি করতে পারেন? আমি এরকম ব্যবহার কখনও দেখিনি।
ওএমজি

87
ফিনিক্স যা নিয়ে কথা বলছে তার একটি উদাহরণ হ'ল <a href="javascript: ডোজোমথিং(); "> এখনই এটি করুন! </a>। যদি ডোজোমিং মিথ্যা প্রত্যাবর্তন করে তবে লিঙ্কটি ক্লিক করলে ব্রাউজারটি কেবল পৃষ্ঠাটি প্রস্থান করে এবং "মিথ্যা" প্রদর্শন করে। তবে ... <a href="javascript: ডোজোমথিং(); void(0) "> এখনই করুন! </a> সমস্যা এড়ানো হয়। এগিয়ে যান এবং জাভাস্ক্রিপ্ট আটকান: 1 + 1; আপনার ব্রাউজারের ঠিকানা বারে। ব্রাউজার প্রদর্শন করা উচিত "2"
ব্রেটন

9
কারণ অকার্যকর একটি unary অপারেটর। অকার্যকর কোনও মূল্য নয়, এটি কোনও ফাংশনও নয়। ডানদিকে চালিত করার জন্য এটির একটি মান প্রয়োজন, অথবা এটি একটি ত্রুটি ছুঁড়ে দেবে।
ব্রেটন

14
ত্রুটি কনসোল খুঁজছেন? এটি সংজ্ঞায়িতভাবে একটি সিনট্যাক্স ত্রুটি ছুঁড়ে দেয়। এটি অবৈধ জাভাস্ক্রিপ্ট। ডগলাস ক্রকফোর্ড অকার্যকর অপারেটর / ফাংশন / মান বিভ্রান্তির কারণে অকার্যকর থেকে দূরে থাকাকে মোকাবেলা করতে ব্যয়বহুল।
ব্রেটন

435

প্রযুক্তিগত উত্তর ছাড়াও, এর javascript:voidঅর্থ লেখক হচ্ছেন এটি করা ভুল।

javascript:সিউডো-ইউআরএল (*) ব্যবহার করার কোনও ভাল কারণ নেই । অনুশীলনে এটি বিভ্রান্তি বা ত্রুটি সৃষ্টি করবে কারও কাছে 'বুকমার্ক লিঙ্ক', 'একটি নতুন ট্যাবে লিংক খুলুন' ইত্যাদির মতো চেষ্টা করা উচিত। এটি এখন অনেকটা ঘটেছিল নতুন নতুন ট্যাবটির জন্য লোকেদের মাঝারি ক্লিকের অভ্যস্ত হয়ে উঠেছে: এটি একটি লিঙ্কের মতো দেখাচ্ছে, আপনি এটি একটি নতুন ট্যাবে পড়তে চান, তবে এটি আদৌ কোনও লিঙ্ক নয়, পরিণত হয়েছে, এবং মধ্য-ক্লিক করা হলে একটি খালি পৃষ্ঠা বা জেএস ত্রুটির মতো অযাচিত ফলাফল দেয়।

<a href="#">একটি সাধারণ বিকল্প যা তর্কযোগ্যভাবে কম খারাপ হতে পারে। তবে লিঙ্কটি অনুসরণ করা এবং পৃষ্ঠার শীর্ষে স্ক্রোল করা রোধ করতে return falseআপনার onclickইভেন্ট হ্যান্ডলারের কাছ থেকে আপনাকে অবশ্যই মনে রাখতে হবে ।

কিছু ক্ষেত্রে লিঙ্কটি নির্দেশ করার জন্য একটি আসল দরকারী জায়গা থাকতে পারে। উদাহরণস্বরূপ, যদি আপনার কোনও নিয়ন্ত্রণ থাকে তবে আপনি <div id="foo">এটিতে ক্লিক করতে পারেন যা পূর্বে লুকানো আছে , এটির <a href="#foo">সাথে লিঙ্কটি ব্যবহার করার জন্য এটি কিছুটা বুদ্ধিমান । অথবা যদি একই জিনিস করার কোনও জাভাস্ক্রিপ্টের উপায় থাকে (উদাহরণস্বরূপ, 'thispage.php? Show = foo' যা ফু দিয়ে শুরু করতে দৃশ্যমান করে), আপনি এটির সাথে লিঙ্ক করতে পারেন।

অন্যথায়, যদি কোনও লিঙ্কটি কিছু স্ক্রিপ্টের দিকে নির্দেশ করে তবে এটি আসলে কোনও লিঙ্ক নয় এবং এটিরূপে চিহ্নিত করা উচিত নয়। স্বাভাবিক পদ্ধতির যোগ করার জন্য হবে onclickএকটি থেকে <span>, <div>অথবা একজন <a>একটি ছাড়া hrefএটা পরিষ্কার আপনি এটিতে ক্লিক করতে পারেন করতে কিছু উপায় এবং এটি শৈলী। এটি স্ট্যাকওভারফ্লো [লেখার সময় করেছিল; এখন এটি ব্যবহার করে href="#"]।

এর অসুবিধা হ'ল আপনি কীবোর্ড নিয়ন্ত্রণ হারাবেন, যেহেতু আপনি স্প্যান / ডিভি / খালি-এ ট্যাব করতে পারবেন না বা স্থান দিয়ে এটি সক্রিয় করতে পারবেন না। এটি আসলে কোনও অসুবিধা কিনা তা নির্ভর করে উপাদান কী ধরণের পদক্ষেপ নেবে তা নির্ভর করে। আপনি কিছু চেষ্টা করে, tabIndexউপাদানটিতে একটি যোগ করে এবং একটি স্পেস কিপ্রেসের কথা শুনে কীবোর্ডের ইন্টারেক্টিভিটি নকল করার চেষ্টা করতে পারেন । তবে এটি কখনই 100% আসল ব্রাউজার আচরণ পুনরুত্পাদন করতে যায় না, কমপক্ষে নয় কারণ বিভিন্ন ব্রাউজারগুলি কীবোর্ডকে আলাদাভাবে প্রতিক্রিয়া জানাতে পারে (অ-ভিজ্যুয়াল ব্রাউজারগুলির উল্লেখ না করে)।

আপনি যদি সত্যিই এমন কোনও উপাদান চান যা কোনও লিঙ্ক নয় তবে যা মাউস বা কীবোর্ড দ্বারা সাধারণ হিসাবে সক্রিয় করা যেতে পারে তবে আপনি যা চান তা হ'ল <button type="button">(বা <input type="button">ঠিক তেমন ভাল, সাধারণ পাঠ্য বিষয়বস্তুর জন্য)। আপনি এটি চাইলে সর্বদা সিএসএস ব্যবহার করতে পারেন যাতে এটি বোতামের চেয়ে কোনও লিঙ্কের মতো লাগে। তবে এটি যেহেতু একটি বোতামের মতো আচরণ করে, তাই আপনার এটিকে সত্যভাবে চিহ্নিত করা উচিত।

(*: সাইট রাইটিংয়ে, যাইহোক। স্পষ্টতই সেগুলি বুকমার্কলেটগুলির জন্য কার্যকর javascript:p সিউডো-ইউআরএলগুলি একটি ধারণামূলক উদ্ভটতা: একটি লোকেশন যা কোনও অবস্থানকে নির্দেশ করে না, পরিবর্তে বর্তমান অবস্থানের অভ্যন্তরে সক্রিয় কোডকে কল করে They তারা ব্যাপক সুরক্ষা তৈরি করেছে ব্রাউজার এবং ওয়েব অ্যাপ্লিকেশন উভয়েরই সমস্যা এবং এটি নেটস্কেপ দ্বারা কখনও আবিষ্কার করা উচিত হয়নি should)


7
@ ববিন্সের দুর্দান্ত পোস্টের পাশাপাশি: আমি কয়েক মাস আগে ক্রস ব্রাউজার কীবোর্ডের নেভিগিবিলিটি নিয়ে কিরক hrefএবং পার্শ্ব প্রতিক্রিয়াগুলি নিয়ে কিছু গবেষণা করেছি ; আপনার মধ্যে কারও কারও
jakub.g

2
@ থিংক বনোবো: ২০০৯ সাল থেকে এসও বদলে গেছে! আপডেট করা হয়েছে।
ববিনস

59
এটি একটি মতামত এবং প্রশ্নের উত্তর দেয় না। void(0)অনেক ক্ষেত্রে প্রয়োজন; "#" হ্যাক যা পুরো সমস্যাটিকে সাথে নিয়ে আসে (এটি আমি যে অ্যাপে লিখছি সেটিতে এটি কাজ করবে না, যা আমাকে এই পৃষ্ঠায় নিয়ে এসেছে)।
felwithe

12
আমি @ ফিলিওথির সাথে একমত অন্যদের "এটি কি একটি বিশেষ উপায়" করতে বাধ্য করবেন? প্রোগ্রামিংয়ের 15 বছরে আমি এখনও দেখতে পেলাম না "কীভাবে সর্বদা এইভাবে করা উচিত" এই উদ্দেশ্যটি কীভাবে মানুষকে তাদের নিজস্ব তৈরির
স্টিভেন ডি সালাস

4
ফ্রেগমেন্ট-আইডি ব্যবহার করা ইউএক্স দৃষ্টিভঙ্গি থেকে একটি খারাপ ধারণা কারণ এটি ডকুমেন্টটি পৃষ্ঠার শীর্ষে ঝাঁপিয়ে দেয় কারণ যদি না preventDefaultব্যবহার করা হয়। কোনও ফর্মের বোতাম হিসাবে কোনও অ্যাঙ্কর ব্যবহৃত হওয়ার ক্ষেত্রে এটি করবেন না।
জোশ হাবদাস

124

এর অর্থ এটি কিছুই করবে না। লিঙ্কটি কোথাও 'নেভিগেট' না করার চেষ্টা করা। তবে এটি সঠিক উপায় নয়।

আপনি আসলে ঠিক করা উচিত return falseযে onclickঘটনা, যেমন:

<a href="#" onclick="return false;">hello</a>

সাধারণত লিঙ্কটি কিছু 'জাভাস্ক্রিপ্ট-ওয়াই' জিনিস করছে যদি এটি ব্যবহার করা হয়। একটি এজেএক্স ফর্ম পোস্ট করা বা কোনও চিত্র অদলবদল করা বা যা কিছু। সেক্ষেত্রে আপনি যে কোনও ফাংশনকে রিটার্ন বলা হচ্ছে কেবল তা তৈরি করুন false

আপনার ওয়েবসাইটটিকে পুরোপুরি দুর্দান্ত করে তুলতে, সাধারণত, আপনি যদি একটি লিঙ্ক অন্তর্ভুক্ত করেন যা একই ক্রিয়া করে, যদি এটির ব্রাউজ করা ব্যক্তি জাভাস্ক্রিপ্ট না চালানোর জন্য চয়ন করে।

<a href="backup_page_displaying_image.aspx"
   onclick="return coolImageDisplayFunction();">hello</a>

33
না - মিথ্যা প্রত্যাবর্তন ডিফল্ট আচরণ বন্ধ করবে, তাই # কখনই উপস্থিত হবে না
ম্যাগনার

22
জাভাস্ক্রিপ্ট: ইউআরএল প্রোটোকল একটি ডিফাক্টো স্ট্যান্ডার্ড, বাস্তব মান নয়। সুতরাং href = "#" অনক্লিক = "মিথ্যা প্রত্যাবর্তন;" href = "জাভাস্ক্রিপ্ট: অকার্যকর (0)" মান্য নয়, কারণ এমন কোনও অফিসিয়াল স্ট্যান্ডার্ড নেই যা কী করা উচিত তা নির্দিষ্ট করে।
ব্রেটন

10
সর্বোপরি, ডগলাস ক্রকফোর্ড অকার্যকর পছন্দ করেন না, তাই জ্ল্লিন্ট এটি সম্পর্কে অভিযোগ করবেন। মূলত, যেহেতু অকার্যকর একটি অপারেটর, এবং কোনও মান নয়, এটি নরক হিসাবে বিভ্রান্তিকর এবং এর মতো অনেক প্রশ্নের জন্ম দেয়। এটি পুরোপুরি এড়ানো ভাল। হা হা।
ব্রেটন

4
ব্র্যান্ডন: ব্রেন্টনের প্রতিক্রিয়াগুলি দেখুন। আমি যেভাবে প্রস্তাব দিচ্ছি তা সর্বাধিক সমর্থিত এবং যেমনটি আমার পোস্টের দ্বিতীয় অংশে বলেছি, একটি 'যথাযথ' সাইটে আপনি কখনও '#' ব্যবহার করবেন না কারণ আপনি অভাব সামাল দেওয়ার জন্য ফলব্যাক সিস্টেম সরবরাহ করবেন be জাভাস্ক্রিপ্ট।
দুপুর সিল্ক

19
সম্পূর্ণ দুর্দান্ত উদাহরণ অন্তর্ভুক্ত করার জন্য +1 । আপনি জাভাস্ক্রিপ্টে যা করছেন তার জন্য আপনার যদি কোনও স্থির HTML নেই তবে আপনি সর্বদা এর মতো কিছু করতে পারেন <a href="enableJavaScriptToSeeMyCompletelyAwesomeSite.html" onclick="completelyAwesome();return false;">
গ্রান্ট ওয়াগনার

73

"#" বনাম জাভাস্ক্রিপ্টের আচরণে একটি বিশাল পার্থক্য রয়েছে: শূন্য

"জাভাস্ক্রিপ্ট: অকার্যকর (0)" যখন আপনাকে "#" পৃষ্ঠার শীর্ষে স্ক্রোল করে; না.

আপনি গতিশীল পৃষ্ঠাগুলি কোড করছেন যদি এটি খুব গুরুত্বপূর্ণ। ব্যবহারকারী কেবল পৃষ্ঠায় একটি লিঙ্ক ক্লিক করেছেন বলে শীর্ষে ফিরে যেতে চান না।


26
@ সালভিন: ইভেন্ট হ্যান্ডলারে ফিরে এসে স্ক্রোল থেকে টু-পৃষ্ঠার আচরণটি দমন করা যেতে পারে false: onclick="doSomething();return false;"বা যদি doSomething()ফিরে আসে তবে falseআপনি ব্যবহার করতে পারেন onclick="return doSomething();"
গ্রান্ট ওয়াগনার

40
@ গ্রান্ট ওয়াগনার - বা, 5 বছর পরে e.preventDefault(),।
ট্রাইসিস

1
আপনি এই উত্তরটি সম্পাদনা / মুছতে চাইবেন যেহেতু আপনি মিথ্যা প্রত্যাবর্তন করার সময় শীর্ষে স্ক্রোল "#"করেন না
নবীন

4
@ নবীন আপনি সঠিক, কিন্তু এখন এটি একটি পুরানো অনুশীলন। ট্রাইসিসের মন্তব্যটি এখন সঠিক উপায়ে বিবেচিত হয়।
টিম সেগুইন

66

এটি HTML লিঙ্কগুলিতে জাভাস্ক্রিপ্ট ফাংশন যুক্ত করার একটি খুব জনপ্রিয় পদ্ধতি a
উদাহরণস্বরূপ: [Print]আপনি অনেক ওয়েবপৃষ্ঠায় যে লিঙ্কগুলি দেখেন সেগুলি এইভাবে লেখা হয়:

<a href="javascript:void(0)" onclick="callPrintFunction()">Print</a>

কেন আমরা প্রয়োজন hrefথাকার সময়ে onclickএকা কাজ করতে পারি? কারণ যখন ব্যবহারকারী নেই তখন 'মুদ্রণ' পাঠ্যের উপরে hrefঝাঁকুনি দিলে কার্সারটি পয়েন্টার (👆) এর পরিবর্তে একটি ক্যারেটে (ꕯ) পরিবর্তন হবে। কেবল hrefকোনও aট্যাগ থাকা এটিকে হাইপারলিঙ্ক হিসাবে বৈধ করে।

এর বিকল্প href="javascript:void(0);", এর ব্যবহার href="#"। এই বিকল্পটির ব্যবহারকারীর ব্রাউজারে জাভাস্ক্রিপ্ট চালু হওয়ার দরকার নেই, সুতরাং এটি আরও উপযুক্ত।


7
না জাভাস্ক্রিপ্ট বন্ধ করা হয় দরকারী কিছু।
জেসেন

12
আপনাকে hrefপয়েন্টিং হ্যান্ড কার্সার পাওয়ার দরকার নেই ; এটি যা লাগে তা হ'ল কিছুটা সিএসএস।
জন মন্টগোমেরি

1
আপনি কেন জাভাস্ক্রিপ্ট ফাংশনটি হরফের পরিবর্তে অনক্লিকটিতে রাখবেন না?
সিদ্ধার্থ গান্ধী

2
আমি @ সিডের সাথে একমত - আপনি যদি এটি জাভাস্ক্রিপ্ট ফাংশনটি ট্রিগার করতে ব্যবহার করেন তবে <a href="javascript:callPrintFunction()">এটি ক্লিনার (যদিও এটি সম্ভবত আপনাকে কোথাও না নিয়ে যায় তবে এটি সম্ভবত buttonএকটি aএনকরের চেয়ে বেশি হওয়া উচিত )।
ডেভমঙ্গুজ 9:25 '

href="#"অভ্যাস বিস্মিত হতে পারে - বাতিল হওয়া এক্সএইচআর অনুরোধের মতো, যা লিঙ্কটিতে ক্লিক করার জন্য ডাকা হবে। আমি সম্প্রতি একটি ওয়েবসাইট ডিবাগ করতে বেশ সময় পেয়েছিলাম যা ওডিক লগইনকে অনুরোধ করেছিল, যদি ব্যবহারকারী এমন কোনও ঠিকানায় থাকেন যা সাইটের মূল নয়। #এইচআরএফ অনুরোধটি সম্পূর্ণ হওয়ার আগে href এটিকে ঠিকানা পুনরায় লোড করে।
জাস্টামার্টিন

44

আপনি সর্বদা আপনার উপর একটি href থাকা উচিত একটি ট্যাগ। এমন একটি জাভাস্ক্রিপ্ট ফাংশন কল করা যা 'অপরিজ্ঞাপিত' দেয় কেবল জরিমানা করবে। সুতরাং '#' এর সাথে যুক্ত হবে।

ইন্টারনেট এক্সপ্লোরার 6 এ অ্যাঙ্কর ট্যাগগুলি কোনও হ্রেফ ছাড়াই a:hoverস্টাইলটি প্রয়োগ করে না।

হ্যাঁ, এটি ভয়াবহ এবং মানবতার বিরুদ্ধে একটি ছোটখাটো অপরাধ, তবে আবার সাধারণভাবে ইন্টারনেট এক্সপ্লোরার 6 is

আশা করি এটা কাজে লাগবে.

ইন্টারনেট এক্সপ্লোরার 6 আসলে মানবতার বিরুদ্ধে একটি বড় অপরাধ crime


25

এটি উল্লেখ করার মতো যে আপনি কখনও কখনও অপ্রকাশিত 0 পরীক্ষা করার সময় 0 টি শূন্য দেখতে পাবেন, কারণ এটির জন্য কম অক্ষর প্রয়োজন।

উদাহরণ স্বরূপ:

something === undefined

বনাম

something === void 0

কিছু সংশোধন পদ্ধতি এই কারণে শূন্য 0 এর সাথে অপরিশোধিত প্রতিস্থাপন করে।


10
এক উল্লেখযোগ্য উদাহরণ টাইপ করা বিষয় (হয় লাইভ উদাহরণস্বরূপ ), যা বিরুদ্ধে চেক ডিফল্ট পরামিতির মান প্রনয়ন void 0। 3 টি অক্ষরের পার্থক্য দ্রুত যুক্ত হয় যখন প্রচুর পদ্ধতি ডিফল্ট প্যারাম মান ব্যবহার করে।
জন ওয়েইজ

1
"কিছু সংশোধন পদ্ধতি এই কারণে শূন্য 0 এর সাথে অপরিশোধিত প্রতিস্থাপন করে।" অবশেষে আমি এটা বুঝতে পারি! পুরো উত্তরটির জন্য @ স্প্যালোকে ধন্যবাদ।
আহমেদ মাহমুদ

22

এর ব্যবহারের javascript:void(0)অর্থ হ'ল এইচটিএমএল লেখক বোতাম উপাদানটির জায়গায় অ্যাঙ্কর উপাদানটির অপব্যবহার করছেন।

পৃষ্ঠাটি রিফ্রেশ হওয়া থেকে রোধ করতে href "#" বা "জাভাস্ক্রিপ্ট: অকার্যকর (0)" সেট করে সিউডো-বোতাম তৈরি করতে অ্যানক্লার ট্যাগগুলি প্রায়শই অন্লিক ইভেন্টের সাথে আপত্তিজনক হয়। এই মানগুলি লিঙ্কগুলি অনুলিপি / টেনে আনার সময়, কোনও নতুন ট্যাব / উইন্ডোতে লিঙ্কগুলি খোলার সময়, বুকমার্কিংয়ের সময় এবং জাভাস্ক্রিপ্ট এখনও ডাউনলোড করার সময়, ত্রুটিগুলি আউট করা বা অক্ষম করা হয় cause এটি সহায়ক প্রযুক্তিগুলিতেও ভুল শব্দার্থকে বোঝায় (উদাঃ, পর্দার পাঠক)। এই ক্ষেত্রে, <button>পরিবর্তে এটি ব্যবহার করার পরামর্শ দেওয়া হচ্ছে । সাধারণভাবে আপনাকে সঠিক URL টি ব্যবহার করে নেভিগেশনের জন্য একটি অ্যাঙ্কর ব্যবহার করা উচিত।

উত্স: MDN এর <a>পাতা


4
পুরানো প্রশ্নে শব্দার্থক এইচটিএমএল আনার জন্য +1 ... লিঙ্কগুলি স্থান দেয়, বোতামগুলি জিনিসগুলি করে - যদি আমরা এটি কোনও বোতামের মতো দেখতে না চাই তবে আমাদের কেবল স্টাইলিং সাফ করা উচিত।
কেভলার

এর বড় ব্যতিক্রম চিত্রের মানচিত্র হবে, যা জাভাস্ক্রিপ্ট চালানোর প্রয়োজন হতে পারে; এবং যেহেতু এটি বোতাম নয়, এটি একটি লিঙ্ক যা বহুভুজ সীমানা রয়েছে, এটি এটি "একমাত্র" উপায়।

17

voidএমন একটি অপারেটর যা কোনও undefinedমান ফেরত দিতে ব্যবহৃত হয় যাতে ব্রাউজার কোনও নতুন পৃষ্ঠা লোড করতে সক্ষম হয় না।

ওয়েব ব্রাউজারগুলি চেষ্টা করবে এবং যা ইউআরএল হিসাবে ব্যবহৃত হয় তা গ্রহণ করবে এবং এটি জাভাস্ক্রিপ্ট ফাংশন না হলে এটি লোড করবে যা বাতিল করে দেয়। উদাহরণস্বরূপ, আমরা যদি এই জাতীয় লিঙ্কটিতে ক্লিক করি:

<a href="javascript: alert('Hello World')">Click Me</a>

তারপরে একটি সতর্কতা বার্তা কোনও নতুন পৃষ্ঠা লোড না করে প্রদর্শিত হবে এবং এটি কারণ alertএমন একটি ফাংশন যা নাল মান দেয় returns এর অর্থ হ'ল ব্রাউজার যখন কোনও নতুন পৃষ্ঠা লোড করার চেষ্টা করে তখন তা শূন্য দেখায় এবং লোড করার মতো কিছুই থাকে না।

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

<a href="javascript: void(0)">I am a useless link</a>

1
আমি লোককে জাভাস্ক্রিপ্ট ব্যবহার করতে দেখেছি: শূন্যতার পরিবর্তে নাল ... তবে এটি একটি সমস্যা। ক্রোম নাল কাজ করে, ফায়ারফক্সে, পৃষ্ঠাটি নাল লোড করার চেষ্টা করে। খুশি হলাম আপনি আপডেট করেছেন। আকর্ষণীয় বাগ।
গ্যাভিন পিকিন

আমি জাভাস্ক্রিপ্টের মতো কোডবেজে আরও কিছু ব্যবহার পেয়েছি: নাল তবে জাভাস্ক্রিপ্ট সহ: নাল () যা অপরিজ্ঞাত, তাই এটি কার্যকর।
গ্যাভিন পিকিন

1
সুতরাং মূলত এটি jquery এর prevendDefault মত এবং মিথ্যা ফিরে?
রবার্ট রোচা

16

এই ধারণাটি বুঝতে প্রথমে জাভাস্ক্রিপ্টের শূন্য অপারেটরটি বুঝতে হবে।

void «expr»শূন্য অপারেটরের সিনট্যাক্সটি হ'ল: যা এক্সপ্রেসের মূল্যায়ন করে এবং অনির্ধারিত প্রদান করে।

যদি আপনি কোনও ফাংশন হিসাবে শূন্যতা বাস্তবায়িত করেন তবে এটি নিম্নলিখিত হিসাবে দেখায়:

function myVoid(expr) {
    return undefined;
}

এই অকার্যকর অপারেটরের একটি গুরুত্বপূর্ণ ব্যবহার রয়েছে যা - একটি অভিব্যক্তির ফলাফল বাতিল করে।

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

javascript:void window.open("http://example.com/")

2
'অকার্যকর' যুক্তির পক্ষে ঠিক কী তা বোঝানোর জন্য ধন্যবাদ! অন্যান্য উত্তরে এটি পরিষ্কার ছিল না, কেবলমাত্র "অকারণটি একটি যুক্তি নেয়"।
dbeachy1

উত্তম উত্তর তবে একটি বিশদ, অকার্যকর বাস্তবায়ন এরকম কিছু হবে: function myVoid(expr) { expr(); return undefined; } আপনি ভুলে গেছেন এক্সপ্রেস ();
জুয়ানমা মেনেন্ডেজ

1
@ জুয়ানমা মেনেনডেজ: সত্য নয়। ডাকা exprহলে ইতিমধ্যে মূল্যায়ন করা myVoid()হয় (এই অভিব্যক্তির ফলাফলটি প্যারামিটার হিসাবে পাস করা হয়)
ইউডো জি

@ ইউডিজি আমি কৌতূহলী, আপনি কীভাবে জানেন যে পুরুষরা? আপনি দয়া করে ব্যাখ্যা করতে পারেন
জুয়ানমা মেনেন্ডেজ

@ জুয়ান্মা মেনেনডেজ: ফাংশন প্যারামিটারে প্রকাশের ক্রিয়াটি নিজেই কল করার আগে সর্বদা মূল্যায়ন করা হয়। দুঃখিত, আমার হাতে এমন কোনও দলিল নেই যা function() { alert("foo"); }এটিকে পরিষ্কার করে দেয় তবে নিজেকে চেষ্টা করুন: এটি একটি বৈধ এক্সপ্রেশনvoid(function() { alert("foo"); })ফিরে আসে undefinedএবং সতর্কতা প্রদর্শন করে না , যেখানে myVoid(function() { alert("foo"); })(আপনার সংস্করণে, গোপাল যাদবের কোনও নয় ) রয়েছে।
উদো জি

14

voidঅপারেটর প্রদত্ত অভিব্যক্তি মূল্যায়ণ এবং তারপর undefined ফেরৎ। এটি পৃষ্ঠাটি সতেজ করা এড়িয়ে চলে।


9

ওয়েব বিকাশকারীরা ব্যবহার করেন javascript:void(0)কারণ এটি aট্যাগের ডিফল্ট আচরণ রোধ করার সবচেয়ে সহজ উপায় । void(*anything*)ফিরে আসে undefinedএবং এটি একটি মিথ্যা মান। এবং একটি falsy মান ফিরে মতো return falseমধ্যে onclickঘটনা aট্যাগ তার ডিফল্ট আচরণ প্রতিরোধ।

তাই আমি মনে করি ট্যাগের javascript:void(0)ডিফল্ট আচরণ রোধ করার সহজ উপায় a


8

কোনও লিঙ্কের অবশ্যই ব্যবহারযোগ্য ডিসপ্লে অবজেক্ট হিসাবে সক্ষম করার জন্য একটি HREF লক্ষ্য নির্দিষ্ট করতে হবে।

বেশিরভাগ ব্রাউজারগুলি উন্নত জাভাস্ক্রিপ্ট একটি তে পার্স করবে না

<A HREF="" 

ট্যাগ যেমন:

<A href="JavaScript:var elem = document.getElementById('foo');" 

কারণ বেশিরভাগ ব্রাউজারগুলিতে এইচআরএফ ট্যাগটি হোয়াইটস্পেসের অনুমতি দেয় না বা হোয়াইটস্পেসকে% 20 এ রূপান্তরিত করে, এমন একটি স্পেসের এইচএক্স সমপরিমাণ, যা আপনার জাভাস্ক্রিপ্টটিকে দোভাষীর কাছে একেবারেই অকেজো করে দেয়।

সুতরাং আপনি যদি ইনলাইন জাভাস্ক্রিপ্ট চালনার জন্য একটি এইচআরএফ ট্যাগ ব্যবহার করতে চান তবে আপনাকে অবশ্যই এইচআরএফ FIRST এর জন্য একটি বৈধ মান নির্দিষ্ট করতে হবে যা খুব জটিল নয় (হোয়াইটস্পেস ধারণ করে না) এবং তারপরে অনক্লিকের মতো ইভেন্টের বৈশিষ্ট্য ট্যাগটিতে জাভাস্ক্রিপ্ট সরবরাহ করতে হবে , অনমাউসওভার, অনমাউসআউট ইত্যাদি

সাধারণ উত্তরটি হ'ল এরকম কিছু করা:

<A HREF="#" onclick="var elem = document.getElementById('foo');">Get the object</a>

এটি সূক্ষ্মভাবে কাজ করে তবে পাউন্ড সাইন / হ্যাশ ট্যাগের কারণে এটি পৃষ্ঠায় শীর্ষে চলে যায়।

কেবলমাত্র একটি এইচআরইএফ ট্যাগে পাউন্ড সাইন / হ্যাশ ট্যাগ সরবরাহ করা মূলত মূল অ্যাঙ্কর নির্দিষ্ট করে, যা সর্বদা পূর্বনির্ধারিত পৃষ্ঠার শীর্ষে, আপনি একটি এইচআরএফ ট্যাগের মধ্যে NAME বৈশিষ্ট্যটি নির্দিষ্ট করে আলাদা অবস্থান নির্দিষ্ট করতে পারেন।

<A NAME='middleofpage'></A>

তারপরে আপনি 'মিডফিলপেজে' যেতে আপনার এইচআরএফ ট্যাগটি পরিবর্তন করতে পারেন এবং অনক্লিক ইভেন্টে জাভাস্ক্রিপ্ট সম্পাদন করতে পারেন, একবার এরকম ঘটলে:

<A HREF="#middleofpage" onclick="var elem = document.getElementById('foo');">Get the object</a>

অনেক সময় আসবে যেখানে আপনি এই লিঙ্কটি চারপাশে লাফিয়ে উঠতে চান না, তাই আপনি দুটি জিনিস করতে পারেন:

<A HREF="#thislinkname" name='thislinkname' onclick="var elem = document.getElementById('foo');">Get the object</a>

ক্লিক করা হলে এখন এটি কোথাও যাবে না, তবে এটি পৃষ্ঠাটির বর্তমান ভিউপোর্ট থেকে পুনরায় কেন্দ্রের কারণ হতে পারে। এটি সুন্দর নয়। একটি এইচআরএফ ব্যবহার করে ইন-লাইন জাভাস্ক্রিপ্ট সরবরাহ করার সর্বোত্তম উপায় কী, তবে উপরের কোনওটি না করেই? Javascript: void (0);

<A HREF="JavaScript:void(0);" onclick="var elem = document.getElementById('foo');">Get the object</a>

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

পরবর্তী ঘটনাটি হ'ল অনক্লিকটি কার্যকর হয়। পৃষ্ঠাটি সরানো হয় না, প্রদর্শন-ভিত্তিতে কিছুই হয় না।


এই জাতীয় অ্যাঙ্করটি যেভাবে পরিচালনা করা যেতে পারে তার বিভিন্ন উপায়ে সমস্ত ব্যাখ্যা করার জন্য +1 । আমি যদিও মতামত, যে একটি <a>উপাদান সবসময় কোথাও যেতে হবে ; এটি যদি কেবল কয়েকটি জাভাস্ক্রিপ্ট চালানোর জন্য পৃষ্ঠায় থাকে তবে তার <button>পরিবর্তে একটি ব্যবহার করা উচিত। ব্যবহার <button>উভয়ই শব্দার্থক, এবং অ্যাঙ্কারে কীভাবে হ্যাক করবেন সে সম্পর্কে এই পুরো বিতর্ক থেকে আপনাকে রেহাই দেয় hrefসম্পাদনা: মনে হচ্ছে @ রনি রয়স্টনের নীচে উত্তর ইতিমধ্যে এই যুক্তিটি .েকে রেখেছে।
রবাদশ 8820

1

জাভাস্ক্রিপ্ট: URL গুলি একপাশে; এখানেই অকার্যকর সংক্ষিপ্ত কোড লিখতে কার্যকর হতে পারে।

var error1 = false,
    error2 = false,
    error3 = false;

function error1() {

  error1 = true;
}

function myFunction() {

  // You can easily return and call a function at once, if you don't care about myFunction's return value
  if (!someCondition1)
    return error1();

  // What if you want to set a value first?
  if (!someCondition2) {
    error2 = true;
    return
  }

  // Shortest way to return and set a value at once
  if (!someCondition3)
    return void(error3 = true);

  // More code goes here
}

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