Window.location.href = window.location.href এবং window.location.reload () এর মধ্যে পার্থক্য


196

জাভাস্ক্রিপ্ট এর মধ্যে পার্থক্য কি

window.location.href = window.location.href

এবং

window.location.reload()

ফাংশন?

উত্তর:


247

যদি আমি সঠিকভাবে মনে রাখি window.location.reload()তবে বর্তমান পৃষ্ঠাটি POST ডেটা সহ পুনরায় লোড করে, যেখানে window.location.href=window.location.hrefPOST ডেটা অন্তর্ভুক্ত করে না।

নীচের মন্তব্যে @ ডাব্লু 3 ম্যাক্স দ্বারা উল্লিখিত হিসাবে, ইউআরএলে window.location.href=window.location.hrefঅ্যাঙ্কর (#) থাকলে পৃষ্ঠাটি পুনরায় লোড করবে না - আপনাকে অবশ্যই window.location.reload()এই ক্ষেত্রে ব্যবহার করতে হবে ।

এছাড়াও, নীচে @ মাইক দ্বারা উল্লিখিত হিসাবে window.location.reload(), একটি অতিরিক্ত যুক্তি গ্রহণ skipCacheকরে window.location.reload(true)যাতে ব্রাউজারটি ব্যবহার করে ক্যাশে এড়িয়ে যায় এবং সার্ভার থেকে পৃষ্ঠাটি পুনরায় লোড করে। window.location.reload(false)বিপরীতে কাজ করবে এবং সম্ভব হলে পৃষ্ঠাটি ক্যাশে থেকে লোড করবে।


11
নোট করুন যে আপনি যখন কোনও পোস্টে উইন্ডো.লোকেশন.রেলোড () ব্যবহার করেন তখন ব্রাউজারটি আপনাকে জিজ্ঞাসা করবে যে আপনি পৃষ্ঠাটি পুনরায় লোড করার জন্য ডেটা পুনরায় পাঠাতে চান
উইমহ

3
@ উইমেল, এই বার্তাটি অক্ষম করার কোনও উপায় আছে?
ক্রিস- I

40
window.location.href = window.location.href ইউআরএলে অ্যাঙ্কর (#) থাকলে পৃষ্ঠাটি পুনরায় লোড করবে না - আপনাকে অবশ্যই এই ক্ষেত্রে উইন্ডো.লোকেশন.রেলোড () ব্যবহার করতে হবে।
ডাব্লু 3 ম্যাক্স

5
এছাড়াও মনে রাখবেন যে অবস্থান.রেলোড () সমস্ত স্থিতিশীল সামগ্রী পুনরায় লোড করতে বাধ্য করবে (অনেকটা একটি সিআরটিএল + এফ 5 স্টাইলের হার্ড রিফ্রেশের মতো) যেখানে অবস্থানের স্থানটি href (অথবা পথের নাম বা URL) এ সেট করে না, যা উল্লেখযোগ্য হতে পারে (এবং অপ্রয়োজনীয়) কিছু পৃষ্ঠায় লোড সময়ের মধ্যে পার্থক্য।
রব ভ্যান ড্যাম

2
@Wimmel ক্রোম: পুনরায় লোড করা একটি GET ফায়ারফক্স সঙ্গে পৃষ্ঠা: পূর্ববর্তী অনুরোধ পুনরায় executes, যার অর্থ যদি এটি একটি পোস্ট ছিল, আপনি চমৎকার পপআপ ডেটা আবার পাঠাতে কিনা বা না সম্পর্কে আপনাকে জিজ্ঞাসা পাবেন
জুড়ী

51

আপনি যদি বলেন window.location.reload(true)ব্রাউজারটি ক্যাশে এড়িয়ে যাবে এবং সার্ভার থেকে পৃষ্ঠাটি পুনরায় লোড করবে। window.location.reload(false)বিপরীত করতে হবে।

নোট: defaultজন্য মান window.location.reload()হলfalse


5
@ ইসমাইল - ডিফল্টটি মিথ্যা।
ট্রেভর

2
গুগল ক্রোম 32, ওয়েবআরটিটিসি ব্যবহার করার সময় সত্য / মিথ্যা আমার পক্ষে কাজ করে নি। আমি ওয়েবআরটিটিসি সহ একটি আইফ্রেম করেছি এবং কেবল কৌশলটি ব্যবহার window.location.href = window.location.hrefকরেছি।

আপনি পৃষ্ঠায় একটি ফর্ম পরিবর্তন করেছেন, তাহলে পরিবর্তন করতে পারে (ক্যাশে মান প্রত্যাবর্তন) ব্রাউজারের উপর নির্ভর যখন ব্যবহার অদৃশ্য location.reload()বা location.reload(false)। পৃষ্ঠার সম্পূর্ণ রিফ্রেশ করতে, ব্যবহার করুন location.reload(true)
সানকাট 2000

32

পার্থক্য এটি

window.location = document.URL;

URL- এ কোনও হ্যাশ (#) থাকলে (এটির পরে কিছু না দিয়ে বা না করা) পৃষ্ঠাটি পুনরায় লোড করবে না whereas

window.location.reload();

পৃষ্ঠাটি পুনরায় লোড করবে।


2
সব ব্রাউজারের এই শেষটি হ্যাসির সাথে নেই। যদি শেষ হ্যাশগুলি আপনার জন্য উদ্বেগজনক হয়, তবে চেষ্টা করুন: উইন্ডো.লোকেশন = ডকুমেন্ট.আরএল.রিপ্লেস (/ # $ /, '');
ওয়াল্টার স্টাবোস্

1
কমপক্ষে ক্রোম উদ্বিগ্ন। আমি location.href = location.hrefসামান্য ব্যবহার করতাম , তবে আমি ঠিক সেই সঠিক আচরণটি লক্ষ্য করেছি এবং এই শব্দটি ছড়িয়ে দিতে এসও এর কাছে এসেছি। location.reload()পরিবর্তে ব্যবহার করুন।
পিয়ল

1
আপনি নিয়মিত মত প্রকাশের পরিবর্তে উইন্ডো.লোকেশন.পথনাম ব্যবহার করতে পারেন। উদাহরণস্বরূপ:window.location.replace(window.location.pathname);
আর্সেনি

20

আপনি যদি বুলেটটিকে সত্যে পুনরায় লোড করেন তবে window.location.reload(true)এটি সার্ভার থেকে লোড হবে।

এই বুলিয়ানটি কীভাবে সমর্থিত তা পরিষ্কার নয়, ডাব্লু 3 অরগ উল্লেখ করেছেন যে এনএস এটি সমর্থন করত used

সেখানে window.location.href এবং বিষয়বস্তুর মধ্যে পার্থক্য হতে পারে document.URL - অন্তত location.href এবং অ মান এবং অনুমোদিত নয় এমন মধ্যে একটি পার্থক্য ব্যবহার করা হয় এ document.location , যে ফেরৎ দিয়ে কি ছিল কিন্তু যে সত্যিই গত সহস্রাব্দ

ডকুমেন্টেশনের প্রয়োজনে আমি উইন্ডো.লোকেশন.রেলোড () ব্যবহার করব কারণ এটি আপনি করতে চান।


স্ট্যাকওভারফ্লো . com/a/5091619/429972 দেখুন কারণ এটি পার্থক্যটি ব্যাখ্যা করে।
jontro

14

যেমনটি বলা হয়েছে, ইউআরএল-তে একটি হ্যাশ (#) থাকলে href সংশোধন করা পৃষ্ঠাটি পুনরায় লোড করবে না। সুতরাং, আমি এটি নিয়মিত প্রকাশের পরিবর্তে পুনরায় লোড করতে ব্যবহার করি:

if (!window.location.hash) {
    window.location.href = window.location.href;
} else {
    window.location.reload();
}

6

এই প্রশ্নটি জুড়ে এসেছিল IE এর কিছু ক্ষুদ্র আচরণ সম্পর্কে গবেষণা করে, বিশেষত IE9, পুরানো সংস্করণগুলি পরীক্ষা করে না। এটা দেখতে

window.location.reload();

একটি রিফ্রেশের ফলাফল যা পুরো পর্দাটি এক সেকেন্ডের জন্য ফাঁকা করে দেয়, যেখানে হিসাবে

 window.location = document.URL;

পৃষ্ঠাটি আরও দ্রুত রিফ্রেশ করে প্রায় অদম্যভাবে।

আরও কিছু গবেষণা এবং ফিডলারের সাথে কিছু পরীক্ষা-নিরীক্ষা করা দেখে মনে হচ্ছে এটি ক্যাশকে window.location.reload()বাইপাস করবে এবং সার্ভার থেকে পুনরায় লোড করা হবে যদি আপনি এর সাথে বুলিয়ান পাস করেন বা না করেন তবে এতে আপনার সমস্ত সম্পদ (চিত্র, স্ক্রিপ্ট, স্টাইল শীট, ইত্যাদি) আবার। সুতরাং আপনি যদি পৃষ্ঠাটি এইচটিএমএল রিফ্রেশ করতে চান তবে এটি window.location = document.URLআরও দ্রুত এবং কম ট্রাফিকের সাথে ফিরে আসবে।

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


উইন্ডো.লোকেশন = ডকুমেন্ট.ইউআরএল পৃষ্ঠাটি উইন্ডো.লোকেশন.রেলোড () এর মতোই পুনরায় লোড করে। শীর্ষে ফিরে স্ক্রোল না করে সতেজ করার জন্য কি শিল্পের একটি রাষ্ট্র আছে, বা আপনি যেমন বলেছিলেন তেমন অবিচ্ছিন্নভাবে?
বিগমুগকাপ

6

ফায়ারফক্সের মধ্যে একটি পার্থক্য (12.0) হ'ল কোনও পোস্টে পোস্ট করা পৃষ্ঠায়, পুনরায় লোড () একটি সতর্কতা পপ আপ করবে এবং একটি পুনরায় পোস্ট করবে, যখন একটি URL অ্যাসাইনমেন্ট একটি জিইটি করবে।

গুগল ক্রোম উভয়ের জন্য একটি জিইটি করে।


1
Chrome 38 এখন .reod () এর জন্য পোষ্ট ব্যবহার করছে বলে মনে হচ্ছে।
গ্লেন লিটল

3

জেএসএফ ব্যবহার করে, আমি এখন সেশনটির মেয়াদ শেষ হওয়ার পরে রিফ্রেশের সাথে সমস্যাটি করছি: পৃষ্ঠা পুনরায় লোডের পরে প্রাইমফ্রিজস এক্সপায়ারড এক্সসেপশন এবং কিছু তদন্তের সাথে আমি ফায়ারফক্সে একটি পার্থক্য পেয়েছি:

কলিং window.location.reload()এফএফ-এ রিফ্রেশ আইকনে ক্লিক করার মতো কাজ করে, এটি লাইনটি যুক্ত করে

Cache-Control max-age=0

যখন সেটিংটি window.location.hrefইউআরএল লাইনে ENTER টিপানোর মতো কাজ করে, এটি সেই লাইনটি প্রেরণ করে না।

উভয়কে জিইটি হিসাবে প্রেরণ করা হলেও, প্রথম (পুনরায় লোড) পূর্ববর্তী ডেটা পুনরুদ্ধার করছে এবং অ্যাপ্লিকেশনটি বেমানান অবস্থায় রয়েছে।


1

না, সেখানে থাকা উচিত নয়। যাইহোক, এটি সম্ভব কিছু ব্রাউজারে পার্থক্য রয়েছে, সুতরাং (বা না হয়) কোনও ক্ষেত্রে কাজ নাও করতে পারে।


1

আমার প্রায় 3 বছরের অভিজ্ঞতা থেকে, আমি কোনও পার্থক্য খুঁজে পাইনি ...

সম্পাদনা: হ্যাঁ, তাদের একজন এখানে যেমন বলেছেন, কেবল উইন্ডো.লোকেশন.রেলোড () এ বুলিয়ান প্যারামিটারটি পাস করা পার্থক্য। যদি আপনি সত্যটি পাস করেন , তবে ব্রাউজারটি একটি নতুন পৃষ্ঠা লোড করে, কিন্তু যদি এটি মিথ্যা হয় , তবে ক্যাশে সংস্করণটি লোড করা হবে ...


0

আমাদের ক্ষেত্রে আমরা কেবল ওয়েবভিউতে পৃষ্ঠাটি পুনরায় লোড করতে চাই এবং কিছু কারণে আমরা এটি কেন খুঁজে পেলাম না! ওয়েবে থাকা প্রায় প্রতিটি সমাধানই আমরা চেষ্টা করে দেখি, তবে লোকেশন.রেলোড () বা উইন্ডো.লোকেশন.রেলোড (), অবস্থান.reload (সত্য), এর মতো বিকল্প সমাধান ব্যবহার করে পুনরায় লোড না করে আটকেছি ...!

এখানে আমাদের সহজ সমাধান:

খালি "href" এ্যাট্রিবিউশন মানটির সাথে কেবল একটি <a> ট্যাগ ব্যবহার করুন:

< a href="" ...>Click Me</a>

(কিছু ক্ষেত্রে আপনাকে পুনরায় লোড ট্রিগার করতে লক্ষ্য ক্লিক করতে "সত্য সত্য" ব্যবহার করতে হবে)

আরও তথ্যের জন্য এই প্রশ্নটি দেখুন: একটি খালি href বৈধ?


-3

window.location.href, এটি অ্যান্ড্রয়েড 5.1 থেকে ওয়েবভিউতে আমার জীবনকে রক্ষা করেছে। পৃষ্ঠাটি অ্যান্ড্রয়েড থেকে এই সংস্করণে অবস্থানের সাথে পুনরায় লোড করবে না load

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.