Window.location.href, window.location.replace এবং window.location.assign এর মধ্যে পার্থক্য


128

পার্থক্য কি

  1. window.location.href="http://example.com";
  2. window.location.replace("http://example.com");
  3. window.location.assign("http://example.com");

আমি অনেক ফোরামে পড়েছি যা window.location.assign()কেবলমাত্র বর্তমান সেশনের ইতিহাসকে প্রতিস্থাপন করে এবং তাই ব্রাউজারের পিছনের বোতামটি কাজ করবে না। তবে আমি এটি পুনরুত্পাদন করতে সক্ষম নই।

function fnSetVariable() {
    //window.location.href = "http://example.com";
    window.location.replace("http://example.com");
    //window.location.assign("http://example.com");
}

<a onmouseover="fnSetVariable();" 
   href="PageCachingByParam.aspx?id=12" >
   CLICK 
</a>

1
আপনি URL- এ একটি পুরোনো পোস্টে দেখতে পারেন: stackoverflow.com/questions/1865837/... আশা করি এটা হবে সহায়ক

: এখানে আরও ভাল ব্যাখ্যা stackoverflow.com/a/847130/96656
ম্যাথিয়াস Bynens

উত্তর:


165

এগুলি একই কাজ করে:

window.location.assign(url);
window.location = url;
window.location.href = url;

এগুলি কেবল নতুন URL এ নেভিগেট করে ate replaceইতিহাস একটি নতুন রেকর্ড যোগ ছাড়া URL এ অন্যদিকে নেভিগেট করে উপর পদ্ধতি।

সুতরাং, আপনি এই সমস্ত ফর্মটিতে যা পড়েছেন তা সঠিক নয়। assignপদ্ধতি ইতিহাস একটি নতুন রেকর্ড যোগ আছে।

তথ্যসূত্র: http://developer.mozilla.org/en/window.location


1
ধন্যবাদ উত্তরের জন্য অনেক। এটি ব্রাউজারের ব্যাক বোতামের সমস্যা সমাধানে আমাকে অনেক সহায়তা করেছে।
সন্তোষ কুমার প্যাট্রো

@ ব্লুন্ডারবয়: যাইহোক ভূমিধসের এটি শীর্ষ উত্তর, যাতে কোনও জিনিসই বদলাবে না।
BoltClock

তাহলে কি লাভ assign()? এই উত্তর এবং দস্তাবেজগুলি থেকে এটি অভিন্ন বলে মনে হচ্ছে location = ...
মিত্যা

11

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

(কোনও ফাংশন বা আমি জানি না এমন প্যারামিটারগুলির সংমিশ্রণ যা ইতিহাসের তালিকা এন্ট্রিগুলি নির্দিষ্টরূপে আপনার নিজস্ব নয়, সেগুলি পরিবর্তন বা ওভাররাইট করতে পারে - ব্রাউজারগুলি সাধারণত কোনও সুরক্ষা সীমাবদ্ধতা প্রয়োগ করে না যা কেবল কোনও অপারেশনকে প্রভাবিত করতে পারে এমন কোনও অপারেশনকে সংজ্ঞায়িত করে না this শীর্ষ পৃষ্ঠা ইতিহাস তালিকায় অন্যতম। আমি যা কাপুরুষোচিত জিনিষ ম্যালওয়্যার কি হতে পারে যদি এই ধরনের একটি ফাংশন অস্তিত্ব বিশৃঙ্খলভাবে ভাবতে ভয়ে কাঁপে।)

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


4
'আমি জানি না ইতিহাসের তালিকা এন্ট্রিগুলি পরিবর্তন বা ওভাররাইট করতে পারে এমন প্যারামিটারগুলির কোনও ফাংশন বা সংমিশ্রণ ... ... এইচটিএমএল 5
স্পাইকি

6
আপনার মালিকানাধীন ব্রাউজার ইতিহাসের এন্ট্রিগুলি পরিবর্তন করতে বা ওভাররাইট করতে অক্ষমতা হ'ল একটি সুরক্ষা নিয়ম যা দীর্ঘকাল ধরে চলে। এইচটিএমএল 5 কেবল সেই নিয়ম চালিয়ে যায়।
চক কলার্স

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