সাধারণ জাভাস্ক্রিপ্ট উইন্ডো উইলি-নিলি বন্ধ করতে পারে না। এটি একটি সুরক্ষা বৈশিষ্ট্য যা বিভিন্ন দূষিত শোষণ এবং বিরক্তি বন্ধ করতে কিছুক্ষণ আগে চালু হয়েছিল।
এর জন্য সর্বশেষ কাজ করার বৈশিষ্ট থেকেwindow.close()
:
close()
উইন্ডোতে পদ্ধতি উচিত বস্তু, সব নিম্নলিখিত শর্তাবলী মিলে যদি, বন্ধ ব্রাউজিং প্রসঙ্গ একজন :
- সংশ্লিষ্ট ব্রাউজিং প্রসঙ্গ একজন হয় চিত্রনাট্য closable ।
- আগত স্ক্রিপ্টের ব্রাউজিং প্রসঙ্গ ব্রাউজিং প্রসঙ্গে A এর সাথে পরিচিত ।
- শায়িত্ব স্ক্রিপ্ট ব্রাউজিং প্রসঙ্গ ব্রাউজিং প্রসঙ্গ নেভিগেট করতে অনুমতি দেওয়া হয় একটি ।
কোনও ব্রাউজিং প্রসঙ্গটি স্ক্রিপ্ট-ক্লোজেবল হয় যদি এটি কোনও সহায়ক ব্রাউজিং প্রসঙ্গ হয় যা কোনও স্ক্রিপ্ট দ্বারা তৈরি করা হয়েছিল (ব্যবহারকারীর ক্রিয়া দ্বারা বিপরীতে), বা যদি এটি ব্রাউজিং প্রসঙ্গ হয় যার সেশনের ইতিহাসে কেবলমাত্র একটি ডকুমেন্ট থাকে।
এর অর্থ, একটি ছোট ব্যতিক্রম সহ, জাভাস্ক্রিপ্টকে কোনও উইন্ডো বন্ধ করার অনুমতি দেওয়া উচিত নয় যা একই জাভাস্ক্রিপ্ট দ্বারা খোলা হয়নি।
ক্রোম সেই ব্যতিক্রমটিকে মঞ্জুরি দেয় - যা এটি ব্যবহারকারীর স্ক্রিপ্টগুলিতে প্রযোজ্য নয় - তবে ফায়ারফক্স তা প্রয়োগ করে না। ফায়ারফক্স বাস্তবায়ন সমতল বর্ণনা করেছে :
পদ্ধতিটি ব্যবহার করে কোনও স্ক্রিপ্ট দ্বারা খোলা উইন্ডোগুলির জন্য কেবল এই পদ্ধতিটি কল করার অনুমতি দেওয়া হয় window.open
।
আপনি যদি window.close
গ্রিসমোনকি / ট্যাম্পার্মনকি / ব্যবহারকারী স্ক্রিপ্ট থেকে ব্যবহার করার চেষ্টা করেন তবে আপনি পাবেন:
ফায়ারফক্স: ত্রুটি বার্তা, " Scripts may not close windows that were not opened by script.
"
ক্রোম: কেবল নিঃশব্দে ব্যর্থ।
দীর্ঘমেয়াদী সমাধান:
এর সাথে মোকাবিলা করার সর্বোত্তম উপায় হ'ল পরিবর্তে একটি Chrome এক্সটেনশান এবং / অথবা ফায়ারফক্স অ্যাড-অন করা। এগুলি নির্ভরযোগ্যভাবে বর্তমান উইন্ডোটি বন্ধ করতে পারে।
তবে, যেহেতু সুরক্ষিত ঝুঁকিগুলি, window.close
যা গ্রিসমোনকি / ট্যাম্পারমনকি স্ক্রিপ্টের জন্য উত্থাপিত হয় সেগুলি কম; গ্রিসমোনকি এবং ট্যাম্পার্মনকি যুক্তিযুক্তভাবে তাদের এপিআইতে এই কার্যকারিতাটি সরবরাহ করতে পারে (মূলত আপনার জন্য এক্সটেনশান কাজের প্যাকেজিং)।
একটি বৈশিষ্ট্য অনুরোধ করা বিবেচনা করুন।
হ্যাকি ওয়ার্কআউন্ডস:
ক্রোম বর্তমানে "স্ব-পুনর্নির্দেশ" শোষণের পক্ষে ঝুঁকির মধ্যে রয়েছে। সুতরাং এই জাতীয় কোড সাধারণভাবে কাজ করতে ব্যবহৃত:
open(location, '_self').close();
এটি বগী আচরণ, আইএমও এবং এখন (প্রায় এপ্রিল 2015 হিসাবে) বেশিরভাগ অবরুদ্ধ। এটি এখনও কেবলমাত্র ট্যাবটি সদ্য খোলা থাকলে এবং ব্রাউজিংয়ের ইতিহাসে কোনও পৃষ্ঠা না থাকলে ইনজেকশন কোড থেকে কাজ করবে । সুতরাং এটি শুধুমাত্র পরিস্থিতিতে খুব সামান্য সেটে দরকারী।
যাইহোক, ক্রোম (v43 & v44) প্লাস ট্যাম্পারমনকি (v3.11 বা তার পরে) এ এখনও একটি প্রকরণ কাজ করে । একটি স্পষ্ট @grant
এবং সরল ব্যবহার করুন window.close()
। উদাহরণ:
// ==UserScript==
// @name window.close demo
// @include http://YOUR_SERVER.COM/YOUR_PATH/*
// @grant GM_addStyle
// ==/UserScript==
setTimeout (window.close, 5000);
আপডেটের জন্য zanetu ধন্যবাদ । মনে রাখবেন যে কেবলমাত্র একটি ট্যাব খোলা থাকলে এটি কাজ করবে না। এটি কেবলমাত্র অতিরিক্ত ট্যাবগুলি বন্ধ করে দেয়।
ফায়ারফক্স সেই শোষণের বিরুদ্ধে সুরক্ষিত। সুতরাং, জাভাস্ক্রিপ্টের একমাত্র উপায় হ'ল সুরক্ষা সেটিংস পঙ্গু করা, একবারে একটি ব্রাউজার।
আপনি খুলতে about:config
এবং সেট
allow_scripts_to_close_windows
করতে পারেন true
।
যদি আপনার স্ক্রিপ্টটি ব্যক্তিগত ব্যবহারের জন্য হয় তবে এগিয়ে যান এবং এটি করুন। আপনি যদি অন্য কাউকে সেটিংটি চালু করতে বলেন, তারা কুসংস্কারের সাথে প্রত্যাখ্যান করতে স্মার্ট এবং ন্যায়সঙ্গত হবে।
ক্রোমের জন্য বর্তমানে কোনও সমতুল্য সেটিং নেই।
window.close()
ক্রোমে আমার জন্য কাজ করে।