যেহেতু এইচটিটিপি রাষ্ট্রবিহীন, আপনি যখনই পৃষ্ঠাটি লোড করবেন তখন এটি আপনি জাভাস্ক্রিপ্টে যা সেট করেছেন তার প্রাথমিক মানগুলি ব্যবহার করবে। আপনি জেএসে একটি বৈশ্বিক পরিবর্তনশীল সেট করতে পারবেন না এবং পৃষ্ঠাটি আবার লোড করার পরে কেবল সেই মানটিকেই স্থির রাখতে পারবেন না।
আপনি অন্য কোনও জায়গায় মানটি সঞ্চয় করতে পারেন এমন কয়েকটি উপায় রয়েছে যাতে আপনি এটি জাভাস্ক্রিপ্ট ব্যবহার করে লোডে আরম্ভ করতে পারেন
অনুসন্ধানের স্ট্রিং
GET
পদ্ধতিটি ব্যবহার করে কোনও ফর্ম জমা দেওয়ার সময় , ইউআরএল একটি কোয়েরি স্ট্রিং ( ?parameter=value&something=42
) সহ আপডেট হয় । আপনি একটি নির্দিষ্ট মান ফর্ম একটি ইনপুট ক্ষেত্র সেট করে এটি ব্যবহার করতে পারেন। এটি সহজতম উদাহরণ হবে:
<form method="GET">
<input type="hidden" name="clicked" value="true" />
<input type="submit" />
</form>
পৃষ্ঠার প্রাথমিক লোডে, কোনও কোয়েরি স্ট্রিং সেট করা নেই। আপনি এই ফর্মটি জমা দেওয়ার সময় name
এবং value
ইনপুটটির সংমিশ্রণটি কোয়েরি স্ট্রিং হিসাবে পাস করা হবে clicked=true
। সুতরাং পৃষ্ঠাটি যখন সেই ক্যোয়ারী স্ট্রিংটি আবার লোড হয় তখন আপনি বাটনটি ক্লিক করা হয়েছিল কিনা তা পরীক্ষা করতে পারেন।
এই ডেটা পড়তে, আপনি পৃষ্ঠা লোডে নিম্নলিখিত স্ক্রিপ্টটি ব্যবহার করতে পারেন:
function getParameterByName(name) {
name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"),
results = regex.exec(location.search);
return results === null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
}
var clicked = getParameterByName('clicked');
( উত্স )
এটির ব্যবহারের দক্ষতা বর্তমানে আপনার ফর্মটি কীভাবে কাজ করে তার উপর নির্ভর করে, আপনি যদি ইতিমধ্যে একটি পোষ্ট ব্যবহার করেন তবে এটি সমস্যাযুক্ত হতে পারে।
তদ্ব্যতীত, বড় আকারের ডেটার জন্য এটি সর্বোত্তমের চেয়ে কম। স্ট্রিংয়ের পাশ দিয়ে যাওয়া কোনও বড় বিষয় নয় তবে অ্যারে এবং ডেটা অবজেক্টের জন্য আপনার সম্ভবত ওয়েব স্টোরেজ বা কুকিজ ব্যবহার করা উচিত। ব্রাউজারগুলিতে বিশদগুলি কিছুটা আলাদা হলেও ইউআরআই দৈর্ঘ্যের ব্যবহারিক সীমাটি প্রায় 2000 টি অক্ষর
ওয়েব স্টোরেজ
এইচটিএমএল 5 প্রবর্তনের সাথে সাথে আমরা ওয়েব স্টোরেজও পেয়েছি, যা আপনাকে পৃষ্ঠা লোড জুড়ে ব্রাউজারে তথ্য সংরক্ষণ করতে দেয়। এমন একটি রয়েছে localStorage
যা দীর্ঘ সময়ের জন্য ডেটা সংরক্ষণ করতে পারে (যতক্ষণ না ব্যবহারকারী ম্যানুয়ালি এটিকে সাফ করে না) এবং এটি sessionStorage
কেবল আপনার বর্তমান ব্রাউজিং সেশনের সময় ডেটা সংরক্ষণ করে। পরেরটি এখানে আপনার জন্য দরকারী, কারণ আপনি যখন ব্যবহারকারী পরে আসবেন তখন আপনি "ক্লিক" করা সেটকে সত্যে রাখতে চান না।
এখানে আমি বোতাম ক্লিক ইভেন্টের স্টোরেজ সেট করেছি, তবে আপনি এটি জমা দিতে বা অন্য কোনও কিছুতে বাঁধাই করতে পারেন।
$('input[type="submit"][value="Search"]').click(function() {
sessionStorage.setItem('clicked', 'true');
});
তারপরে আপনি পৃষ্ঠাটি লোড করার পরে, এটি এটি ব্যবহার করে সেট করা আছে কিনা তা আপনি পরীক্ষা করতে পারেন:
var clicked = sessionStorage.getItem('clicked');
যদিও এই মানটি কেবল এই ব্রাউজিং সেশনের সময় সংরক্ষিত হয়, আপনি এটি পূর্বে পুনরায় সেট করতে চান। এটি করতে, ব্যবহার করুন:
sessionStorage.removeItem('clicked');
আপনি যদি কোনও জেএস অবজেক্ট বা অ্যারে সংরক্ষণ করতে চান তবে আপনার এটি স্ট্রিংতে রূপান্তর করা উচিত। অনুমান অনুসারে অন্যান্য ডেটাটাইপগুলি সংরক্ষণ করা সম্ভব হওয়া উচিত, তবে ব্রাউজারগুলিতে এটি এখনও সঠিকভাবে প্রয়োগ করা হয়নি।
localStorage.setItem('myObject', JSON.stringify(myObject));
var myObject = JSON.parse(localStorage.getItem('myObject'));
ব্রাউজার সমর্থনটি দুর্দান্ত দুর্দান্ত তাই আপনার যদি সত্যই পুরানো / অস্পষ্ট ব্রাউজারগুলি সমর্থন না করে তবে এটি ব্যবহার করা আপনার নিরাপদ হওয়া উচিত। ওয়েব স্টোরেজ ভবিষ্যত।
কুকিজ
ওয়েব স্টোরেজের একটি বিকল্প একটি কুকিতে ডেটা সংরক্ষণ করছে। কুকিগুলি মূলত ডেটা সার্ভার-সাইড পড়ার জন্য তৈরি করা হয় তবে খালি ক্লায়েন্ট-সাইড ডেটার জন্যও ব্যবহার করা যেতে পারে।
আপনি ইতিমধ্যে jQuery ব্যবহার করেছেন, যা কুকিজ সেট করা বেশ সহজ করে তোলে। আবার, আমি click
এখানে ইভেন্টটি ব্যবহার করি তবে যে কোনও জায়গায় ব্যবহার করা যেতে পারে।
$('input[type="submit"][value="Search"]').click(function() {
$.cookie('clicked', 'true', {expires: 1});
});
তারপরে পৃষ্ঠা লোডে আপনি কুকিটি এভাবে পড়তে পারেন:
var clicked = $.cookie('clicked');
আপনার ক্ষেত্রে কুকিগুলি যেমন অধিবেশন ধরে রাখে আপনার এটির জন্য যা করা দরকার তা করার সাথে সাথে আপনাকে সেগুলি আনসেট করা দরকার। আপনি চাইবেন না যে ব্যবহারকারী একদিন পরে ফিরে আসবে এবং এখনও clicked
সত্য হয়ে গেছে।
if(clicked === "true") {
$.cookie('clicked', null);
}
(কুকিজ সেট / পঠনের একটি নন jQuery উপায় এখনই পাওয়া যাবে )
আমি ব্যক্তিগতভাবে কোনও ক্লিকের স্থিতি মনে রাখার মতো সাধারণ কোনও জিনিসের জন্য কুকি ব্যবহার করব না, তবে যদি ক্যোয়ারী স্ট্রিং কোনও বিকল্প না হয় এবং আপনার সত্যিকারের পুরানো ব্রাউজারগুলিকে সমর্থন করা দরকার যা সেশনস্টোরারেজ সমর্থন করে না এটি কাজ করবে। আপনার প্রথমে সেশনস্টোরেজের জন্য একটি চেক সহ এটি প্রয়োগ করা উচিত এবং কেবলমাত্র যদি কুকি পদ্ধতিটি ব্যর্থ হয়।
উইন্ডো.নাম
যদিও এটি আমার কাছে হ্যাকের মতো বলে মনে হয়েছে যা সম্ভবত স্থানীয় স্টোরেজ / সেশন স্টোরেজ এর আগে থেকেই উদ্ভূত, আপনি window.name
সম্পত্তিটিতে তথ্য সংরক্ষণ করতে পারেন :
window.name = "my value"
এটি কেবল স্ট্রিং সংরক্ষণ করতে পারে, সুতরাং আপনি যদি কোনও বিষয় সংরক্ষণ করতে চান তবে আপনাকে উপরের localStorage
উদাহরণের মতোই স্ট্রিংফাই করতে হবে :
window.name = JSON.stringify({ clicked: true });
প্রধান পার্থক্য হ'ল এই তথ্যটি কেবল পৃষ্ঠা রিফ্রেশই নয় বিভিন্ন ডোমেন জুড়েও বজায় রাখা হয়। তবে এটি আপনার বর্তমান ট্যাবে সীমাবদ্ধ।
এর অর্থ আপনি আপনার পৃষ্ঠায় কিছু তথ্য সংরক্ষণ করতে পারবেন এবং ব্যবহারকারী যতক্ষণ না সেই ট্যাবে থাকবেন ততক্ষণ আপনি একই তথ্য অ্যাক্সেস করতে পারবেন এমনকি যদি সে অন্য কোনও ওয়েবসাইট এবং পিছনে ব্রাউজ করে। সাধারণভাবে, আমি এটি ব্যবহার করার বিরুদ্ধে পরামর্শ দেব যদি না আপনার একক ব্রাউজিং সেশনের সময় ক্রস-ডোমেনের তথ্য সংরক্ষণের প্রয়োজন হয়।