উত্তর:
ডাব্লু 3 সি অনুসারে, তারা একই রকম। বাস্তবে, ক্রস ব্রাউজার সুরক্ষার জন্য, আপনার window.location
পরিবর্তে ব্যবহার করা উচিত document.location
।
window.location
কোনও যুক্তি সরবরাহ না করে সেরা অনুশীলনের (সর্বদা ব্যবহারের ) প্রস্তাব দেওয়ার জন্য। আপনি যদি ন্যায়সঙ্গততা প্রদান না করেন তবে কেন কেউ আপনার পরামর্শ নেবেন? ক্রিস্টফের উত্তর এক্ষেত্রে অনেক বেশি কার্যকর।
বর্তমান অবস্থানের অবজেক্টটি পাওয়ার মূল বিষয় হ'ল window.location
( ১৯৯ MS সালের এই এমএসডিএন পৃষ্ঠা এবং ২০০ from সালের ডাব্লু 3 সি খসড়া দেখুন )।
এর সাথে এই তুলনা করুন document.location
, যা মূলত কেবলমাত্র বর্তমান ইউআরএলকে স্ট্রিং হিসাবে ফিরিয়ে দিয়েছে ( এমএসডিএন-তে এই পৃষ্ঠাটি দেখুন )। সম্ভবত বিভ্রান্তি এড়াতে, document.location
প্রতিস্থাপন করা হয়েছিল document.URL
( এখানে এমএসডিএন দেখুন ), যা ডিওএম স্তর 1 এরও একটি অংশ ।
যতদূর আমি জানি, সমস্ত আধুনিক ব্রাউজারগুলি মানচিত্র document.location
করে window.location
তবে আমি window.location
প্রথম ডিএইচটিএমএল লেখার পর থেকে আমি এটি ব্যবহার করেছি।
window.location
এটি location
কি কেবল ব্যবহারের জন্য সমানভাবে বৈধ নয় ?
window
অবজেক্ট। সুতরাং, আপনার স্ক্রিপ্টের শীর্ষ স্তরে আপনি যে কোনও পরিবর্তনশীল বা ফাংশনটি সংজ্ঞায়িত করেন তা হ'ল রেফারেন্স করা অবজেক্টের সম্পত্তি window
, যা বৈশ্বিক অবজেক্ট হিসাবে ঘটে। যেমন অনুপস্থিত মত গ্লোবাল অবজেক্ট নিহিত window.
- সুতরাং location
এটি ব্যাখ্যা করা হয় window.location
। ক্যাভেটস - ফে if(an_undefined_variable)
যদি ভেরিয়েবল সংজ্ঞায়িত না হয় - ত্রুটি ঘটায় if(window.an_undefined_variable)
।
উইন্ডো.লোকেশনটি সমস্ত কমপ্লায়েন্ট ব্রাউজারগুলিতে পড়তে / লিখতে হয়।
ডকুমেন্ট.এলোকেশন কেবলমাত্র ইন্টারনেট এক্সপ্লোরারে (কমপক্ষে) পঠনযোগ্য তবে গেকো-ভিত্তিক ব্রাউজারগুলিতে (ফায়ারফক্স, সিমনকি) পড়ুন / লিখুন।
document.location
কেবলমাত্র আইই-তে পড়ি তা পুনরুত্পাদন করতে পারি না । আমি এটি সফলভাবে আইই 10, 9, 8 এবং 6 এ অর্পণ করতে পারি ( আধুনিক . ie থেকে ভিএম ব্যবহার করে )।
console.log(location);
? !!
document.location
মূলত একটি পঠনযোগ্য সম্পত্তি ছিল, যদিও গেকো ব্রাউজারগুলি আপনাকে এটিকেও নির্ধারণের অনুমতি দেয়। ক্রস ব্রাউজার সুরক্ষার জন্য, window.location
পরিবর্তে ব্যবহার করুন।
আরও পড়ুন:
মজার বিষয় হল, যদি আপনার কাছে 'অবস্থান' নামে একটি ফ্রেম, চিত্র বা ফর্ম থাকে তবে লোকেশন অবজেক্টের পরিবর্তে 'ডকুমেন্ট.লোকশন' যথাক্রমে ফ্রেম উইন্ডো, চিত্র বা ফর্মের জন্য একটি রেফারেন্স সরবরাহ করে। স্পষ্টতই, কারণ ডকুমেন্ট.ফর্ম, ডকুমেন্ট.ইমেজ এবং উইন্ডো.ফ্রেমস সংগ্রহের নাম অনুসন্ধান উইন্ডো.লোকেশনে ম্যাপিংয়ের চেয়ে অগ্রাধিকার পায়।
<img name='location' src='location.png'>
if (document.location.tagName == 'IMG') alert('Hello!')
window.location
এবং document.location
Chrome এবং ফায়ারফক্সে ছায়া দেওয়া যায় না।
আমি যতদূর জানি উভয়ই এক রকম। ক্রস ব্রাউজার সুরক্ষার জন্য আপনি এর window.location
চেয়ে ব্যবহার করতে পারেন document.location
।
সমস্ত আধুনিক ব্রাউজারগুলি এতে মানচিত্র document.location
রাখে window.location
তবে আমি window.location
আমার প্রথম ওয়েব পৃষ্ঠা লেখার পর থেকে এখনও এটিই পছন্দ করি। এটি আরও সামঞ্জস্যপূর্ণ।
আপনি document.location === window.location
রিটার্নও দেখতে পাবেন true
, যা স্পষ্ট করে যে উভয়ই সমান।
document.location === window.location
আয় true
এছাড়াও
document.location.constructor === window.location.constructor
হয় true
দ্রষ্টব্য: সবেমাত্র পরীক্ষিত, ফায়ারফক্স 3.6, অপেরা 10 এবং আই 6
===
এবং ==
সমতুল্য।
"abc" == new String("abc")
ফেরার true
সময় "abc" === new String("abc")
ফিরে আসে false
।
==
এবং ===
সমতুল্য। দেখুন বৈশিষ্ট বিভাগে 11.9.3 এবং 11.9.6। অ নাল জন্য, অ undefined, অ-নম্বর, অ bool, একই ধরনের সঙ্গে অ স্ট্রিং মূল্যবোধ, ==
আচার-আচরণ 11.9.3 অংশ 1F, এবং দ্বারা নিয়ন্ত্রিত হয় ===
আচরণ 11.9.6 অংশ 7, যা অভিন্নরুপে পড়া দ্বারা রিটার্ন true
যদি x এবং y একই বস্তুকে বোঝায়। অন্যথায়, ফিরে false
।
document.location
এবং window.location
বস্তুগুলিকে নির্দেশ করছে। আপনি ট্রিপল সমান পুরো পয়েন্ট মিস করছেন; 2 টি সমান ব্যবহার প্রমাণ করে না যে তারা একই আপত্তি। আমাদের 3 টি সমান নয় 2 টি সমান ব্যবহার করা উচিত কারণ 2 সমান আমাদের একটি মিথ্যা ধনাত্মক দেয়। যে ব্রাউজারে ডকুমেন্ট.লোকশনটি ইউআরএল স্ট্রিং এর সমান window.location.toString()
, তারপরে document.location==window.location
সত্য document.location===window.location
ফিরে আসবে এবং মিথ্যা ফিরে আসবে।
document.location === window.location
তুলনা যায়। সত্য যে .constructor
তুলনা খুব মানে নিক্ষিপ্ত হয়, আমি মনে করি, এই উত্তর তবুও শব্দ, কিন্তু ব্যবহার ===
যুক্তি প্রক্রিয়া সহজ হবে।
হ্যাঁ, তারা একই। এটি ব্রাউজার জেএস এপিআইয়ের অনেক historicalতিহাসিক কৌতূহলগুলির মধ্যে একটি। করার চেষ্টা করুন:
window.location === document.location
উইন্ডো.লোকেশন পুরানো ব্রাউজারগুলি বিবেচনা করে দুটির সাথে আরও নির্ভরযোগ্যভাবে সামঞ্জস্যপূর্ণ।
আজকাল পার্থক্যটি দেখা বিরল কারণ এইচটিএমএল 5 আর ফ্রেমসেট সমর্থন করে না। তবে যখন আমাদের ফ্রেমসেট ছিল, ডকুমেন্ট.লোকেশন কেবল সেই ফ্রেমে পুনর্নির্দেশ করবে যেখানে কোডটি কার্যকর করা হচ্ছে এবং উইন্ডো.লোকেশন পুরো পৃষ্ঠাটি পুনর্নির্দেশ করবে।
আমি বলব window.location
বর্তমান ইউআরএল পাওয়ার আরও নির্ভরযোগ্য উপায় । অনুসরণ মধ্যে পার্থক্য window.location
এবং document.url
যে পরিস্থিতিতে যেখানে আমি URL- এ হ্যাশ পরামিতি সংযোজন করা হয় এবং পরে এটি পড়া এক সামনে আসেন।
ইউআরএলে হ্যাশ প্যারামিটার যুক্ত করার পরে।
পুরানো ব্রাউজারে, আমি ইউআরএল থেকে হ্যাশ প্যারামিটারগুলি ব্যবহার করে সক্ষম করতে document.url
পারি নি, তবে আমি যখন ব্যবহার করি window.location
তখন আমি ইউআরএল থেকে হ্যাশ প্যারামিটার পেতে সক্ষম হয়েছি।
সুতরাং এটি ব্যবহার করা সর্বদা ভাল window.location
।
document.URL
- এটি ছিল window.location
এবং সম্পর্কে document.location
। এছাড়াও, document.url
বিদ্যমান নেই = এটি বড় হাতের হওয়া উচিত।
document.location.constructor === window.location.constructor
হয় true
।
এটি কারণ এটি দেখতে আপনি দেখতে পারেন ঠিক একই জিনিস document.location===window.location
।
সুতরাং কনস্ট্রাক্টর বা অন্য কোনও সম্পত্তির তুলনা করার দরকার নেই।
আচ্ছা হ্যাঁ, তারা একই, কিন্তু ....!
window.location
কিছু ইন্টারনেট এক্সপ্লোরার ব্রাউজারে কাজ করছে না।
বেশিরভাগ লোকেরা এখানে সুপারিশ করা সত্ত্বেও, গুগল অ্যানালিটিক্সের ডায়নামিক প্রোটোকলগুলি যুগে যুগে দেখতে এলো (তারা সম্প্রতি ga.js থেকে বিশ্লেষণ.জেজে স্থানান্তরিত হওয়ার আগে):
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
আরও তথ্য: https://developers.google.com/analytics/devguides/collection/gajs/
নতুন সংস্করণে তারা '//' ব্যবহার করেছে যাতে ব্রাউজার স্বয়ংক্রিয়ভাবে প্রোটোকল যুক্ত করতে পারে:
'//www.google-analytics.com/analytics.js'
সুতরাং গুগল যদি জেএস-এ প্রোটোকলের প্রয়োজন হয় তখন ডকুমেন্ট- লোকেশনকে পছন্দ করে তবে window.location
আমার ধারণা তাদের কাছে এর কিছু কারণ রয়েছে।
সামগ্রিক : আমি ব্যক্তিগতভাবে বিশ্বাস করি document.location
এবং window.location
এটি একই, তবে যদি ডকুমেন্ট.লোকশন ব্যবহার করে গুগলের মতো ব্রাউজারগুলির ব্যবহার সম্পর্কে সবচেয়ে বড় পরিসংখ্যান রয়েছে তবে আমি সেগুলি অনুসরণ করার পরামর্শ দিই।
প্রকৃতপক্ষে আমি উভয়ের মধ্যে ক্রোমের পার্থক্য লক্ষ্য করেছি, উদাহরণস্বরূপ আপনি যদি কোনও শিশু ফ্রেম থেকে একটি স্যান্ডবক্সযুক্ত ফ্রেমে নেভিগেশন করতে চান তবে আপনি এটি কেবল ডকুমেন্ট.এলোকেশন দিয়ে করতে পারেন তবে উইন্ডো.লোকশন দিয়ে নয়