নতুন ট্যাবে ক্রোম, জাভাস্ক্রিপ্ট, উইন্ডো.পেন


110

ক্রোমে এটি একটি নতুন ট্যাবে খোলে:

<button onclick="window.open('newpage.html', '_blank')" />

এটি একটি নতুন উইন্ডোতে খোলে (তবে আমি এটি একটি নতুন ট্যাবেও খুলতে চাই:

<script language="javascript">
  window.open('newpage.html', '_blank');
</script>

এটা কি সম্ভব?


2
আপনি যা নিশ্চিত করেন সে সম্পর্কে আপনি কি নিশ্চিত? উভয় টুকরা একই ফল।
সাগুরেট

1
কোনও উইন্ডো কোনও ট্যাবে খোলে বা একটি নতুন উইন্ডো স্থানীয় ব্রাউজারের উপর নির্ভর করে এবং ব্যবহারকারী কীভাবে তাদের ব্রাউজারটি কনফিগার করে - এটি জাভাস্ক্রিপ্টে আপনি নির্দিষ্ট করতে পারেন এমন কিছু নয়।
jender00

উত্তর:


150

আপনি এটি সরাসরি নিয়ন্ত্রণ করতে পারবেন না, কারণ এটি ইন্টারনেট এক্সপ্লোরার ব্যবহারকারীদের দ্বারা নিয়ন্ত্রিত একটি বিকল্প।

উইন্ডো.ওপেন ব্যবহার করে একটি ভিন্ন উইন্ডো নাম ব্যবহার করে পৃষ্ঠাগুলি খোলার ফলে পপআপের মতো একটি নতুন ব্রাউজার উইন্ডোতে খোলা হবে বা ব্যবহারকারী যদি ব্রাউজারটি এটির জন্য কনফিগার করে থাকে তবে।

সম্পাদনা করুন:

আরও বিস্তারিত ব্যাখ্যা:

১. আধুনিক ব্রাউজারগুলিতে উইন্ডো.পেন একটি পপআপের পরিবর্তে একটি নতুন ট্যাবে খুলবে।

২. আপনি তৃতীয় প্যারামিটারে বিকল্পগুলি নির্দিষ্ট করে একটি ব্রাউজারকে একটি নতুন উইন্ডো ('পপআপ') ব্যবহার করতে বাধ্য করতে পারেন

৩. যদি উইন্ডো.পেন কলটি কোনও ব্যবহারকারী-সূচিত ইভেন্টের অংশ না হয়, তবে এটি একটি নতুন উইন্ডোতে খুলবে।

৪. একটি "ব্যবহারকারী দ্বারা শুরু করা ইভেন্ট" এর একই ফাংশন কলটির প্রয়োজন নেই - তবে এটি অবশ্যই একটি ব্যবহারকারী ক্লিকের দ্বারা আহৃত ফাংশনটিতে উত্পন্ন হবে must

৫. যদি কোনও ব্যবহারকারী ইভেন্টের সূচনা করে বা কোনও ফাংশন কলকে ডিফেন্ড করে (কোনও ইভেন্ট শ্রোতা বা প্রতিনিধি ক্লিক ইভেন্টের সাথে আবদ্ধ না হয় বা উদাহরণস্বরূপ সেটটাইমআউট ব্যবহার করে), এটি "ব্যবহারকারী দ্বারা চালিত" হিসাবে এটির স্থিতি হারায়

6. কিছু পপআপ ব্লকার ব্যবহারকারী প্রবর্তিত ঘটনা থেকে খোলা জানালা অনুমতি দেবে, কিন্তু যারা অন্যথায় খোলা।

Any. যদি কোনও পপআপ অবরুদ্ধ থাকে তবে এগুলি সাধারণত কোনও ব্লকার দ্বারা অনুমোদিত হয় (ব্যবহারকারী দ্বারা শুরু করা ইভেন্টগুলির মাধ্যমে) কখনও কখনও অবরুদ্ধও হয়ে যায়। কিছু উদাহরণ…

একটি নতুন ট্যাবটির পরিবর্তে একটি নতুন ব্রাউজার উদাহরণে উইন্ডোটি খুলতে বাধ্য করা:

window.open('page.php', '', 'width=1000');

নিম্নলিখিতটি একটি ব্যবহারকারী দ্বারা শুরু করা ইভেন্ট হিসাবে যোগ্য হবে, যদিও এটি অন্য ফাংশনটিকে কল করে:

function o(){
  window.open('page.php');
}
$('button').addEvent('click', o);

নিম্নলিখিতটি ব্যবহারকারী-সূচিত ইভেন্ট হিসাবে যোগ্যতা অর্জন করবে না, যেহেতু সেটটাইমআউট এটিকে পিছিয়ে দেয়:

function g(){
  setTimeout(o, 1);
}
function o(){
  window.open('page.php');
}
$('button').addEvent('click', g);

2
আমি কেবল ক্রোম এবং এফএফ পরীক্ষা করে এটি যুক্ত করতে চাই যে উইন্ডো ওপেন ব্যবহার করে আপনি একটি "ব্যবহারকারী দ্বারা শুরু করা ইভেন্ট" হিসাবে সংজ্ঞায়িত করেন তা ব্রাউজারের ডিফল্ট ক্রিয়া রাখে। এর অর্থ হ'ল ক্রোমে যদি আপনি ক্রোমে শিফটটি ধরে রাখেন এবং ক্লিক করুন একটি নতুন ব্রাউজার উইন্ডো আসবে, আপনি সিটিআরএল ধরে রাখলে (বা মাঝের মাউস বোতাম টিপুন) ব্যাকগ্রাউন্ডে একটি নতুন ট্যাব খোলা হবে। যা খুব সুন্দর, আপনি পুরোপুরি অ্যাঙ্কর ট্যাগ লাগিয়ে কিছু জিনিস তৈরি করতে পারেন।
হাফম্যান

3
"উইন্ডো.পেন কলটি যদি কোনও ব্যবহারকারী-সূচিত ইভেন্টের অংশ না হয়, তবে এটি একটি নতুন উইন্ডোতে খুলবে" " না এটি প্রায় খোলা হবে না।
টিজে ক্রাউডার

3
9/29/2014-র হিসাবে, জেএস কলগুলি উইন্ডোটির নাম হিসাবে _ব্ল্যাঙ্ক ব্যবহার করলে সর্বশেষতম ফায়ারফক্স ইএসআর এবং আইই 11 টি নতুন উইন্ডোতে লিংক বা উইন্ডো.পেন লিঙ্কগুলি খোলে। বর্তমান ক্রোম এত সহজ নয়। আমি শীর্ষে, বাম, প্রস্থ, উচ্চতা, সরঞ্জামদণ্ড, অবস্থান, ডিরেক্টরি, স্থিতি, মেনুবার, স্ক্রোলবার এবং পুনরায় আকার পরিবর্তনযোগ্য এবং ঘুরে আসা প্রতিটিকে বাদ দিয়ে একটি নতুন উইন্ডো খোলার পরীক্ষা করেছি। স্থিতি, মেনুবার বা স্ক্রোলবারগুলি বাদ দেওয়া ছাড়া Chrome সমস্ত কিছু নতুন ট্যাবে খোলা। এটি এতটা নির্বিচারে মনে হয় বিশ্বাস করা শক্ত, তবে বুদ্ধিমানভাবে এটি ঘটেছিল। এখানে উদাহরণস্বরূপ: jsbin.com/mobiyeqojaha/1
এনগমেন্ট

34

এটি কখনও কখনও ট্যাব ব্যবহার করতে বাধ্য হয়, যদি ব্যবহারকারী এটি পছন্দ করে। প্রকাশ যেমন উপরে বলেছে, এটি কখনও কখনও অ-ব্যবহারকারীর-উদ্যোগিত ইভেন্টের ব্যবহার দ্বারা নির্ধারিত হয় তবে এর বিভিন্ন উপায় রয়েছে।

উদাহরণ স্বরূপ:

$("#theButton").button().click( function(event) {
   $.post( url, data )
   .always( function( response ) {
      window.open( newurl + response, '_blank' );
   } );
} );

"সর্বদা" ফাংশনটি ব্যবহারকারী -চিত হিসাবে বিবেচিত না হওয়ায় একটি নতুন ব্রাউজার উইন্ডোতে সর্বদা "newurl" খুলবে। তবে, আমরা যদি এটি করি:

$("#theButton").button().click( function(event) {
   var newtab = window.open( '', '_blank' );
   $.post( url, data )
   .always( function( response ) {
      newtab.location = newurl + response;
   } );
} );

আমরা নতুন ব্রাউজার উইন্ডোটি খুলি বা নতুন ট্যাব তৈরি করি, যা ব্যবহারকারী-সূচনা করা বোতাম ক্লিকের ব্যবহারকারী পছন্দ অনুসারে নির্ধারিত হয়। তারপরে আমরা কেবল এজেএক্স পোস্ট থেকে ফিরে আসার পরে পছন্দসই ইউআরএলটিতে অবস্থানটি সেট করেছি। ভয়েলা, ব্যবহারকারী যদি এটি পছন্দ করে তবে আমরা কোনও ট্যাব ব্যবহার করতে বাধ্য করি।


আমি লক্ষ্য করেছি যে আপনার যদি উইন্ডো.ওপেনের ক্রোমে একটি ব্রেক পয়েন্ট সেট থাকে তবে ব্রাউজারটি একটি নতুন উইন্ডো খুলবে। কোডটি ভাঙ্গা না দেওয়া পরিবর্তে একটি নতুন ট্যাব খোলার ফলস্বরূপ বলে মনে হচ্ছে।
স্কিনিব্রিট 5১

আপনার উইন্ডো.পেন এবং ফাংশনের ফলাফল এমন কিছু না হয় যা 5/6/7 সেকেন্ড বা তার বেশি লাগে It যদি ফাংশনটি এমন কোনও সার্ভারে ডেটা পোস্ট করে যা পিডিএফ তৈরি করছে যা 10 সেকেন্ড সময় নেয়। উইন্ডো.পেনটি ফাঁকা ট্যাবে তাত্ক্ষণিক হয় এবং ব্যবহারকারী 10 সেকেন্ডের জন্য ফাঁকা ট্যাবটির দিকে তাকিয়ে থাকে যতক্ষণ না এটি যাদুগতভাবে পপুলেশন হয়। এখনও আইওএস এ এটিই একমাত্র সমাধান।
কেভিন ব্রাউন

13

যদি আপনি ব্যবহার করেন তবে window.open(url, '_blank')এটি ক্রোম, ফায়ারফক্স ইত্যাদিতে অবরুদ্ধ হবে (পপআপ ব্লকার)

এটা চেষ্টা কর,

$('#myButton').click(function () {
    var redirectWindow = window.open('http://google.com', '_blank');
    redirectWindow.location;
});

এই জন্য কাজ জেএস ফ্রিডল http://jsfiddle.net/safeeronline/70kdacL4/2/

এজ্যাক্স উইন্ডোটির জন্য জেএস ফ্রিডল কাজ করুন http://jsfiddle.net/safeeronline/70kdacL4/1/


11

এই মুহুর্তে (ক্রোম 39) আমি একটি নতুন ট্যাব খুলতে এই কোডটি ব্যবহার করি:

window.open('http://www.stackoverflow.com', '_blank', 'toolbar=yes, location=yes, status=yes, menubar=yes, scrollbars=yes');

অবশ্যই এটি ক্রোমের ভবিষ্যতের সংস্করণগুলিতে পরিবর্তিত হতে পারে।

আপনার ব্যবহারকারীরা যে ব্রাউজারটি ব্যবহার করছেন তা নিয়ন্ত্রণ করতে না পারলে এটি ব্যবহার করা খারাপ ধারণা। এটি ভবিষ্যতের সংস্করণে বা বিভিন্ন সেটিংসের সাথে কাজ নাও করতে পারে।


Jender00 এর মন্তব্য অনুসারে, ব্যবহারকারী যেভাবে ব্রাউজারটি কনফিগার করে তা নির্ধারণ করে যে কীভাবে নতুন উইন্ডোগুলি খোলা হয়, কোড নয়।
লি টেলর

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

2
যারা ভাবছেন তাদের জন্য, এই ত্রুটির কারণে এই কোড স্নিপেটটি কাজ করে না:VM646 js:12 Blocked opening 'http://www.stackoverflow.com/' in a new window because the request was made in a sandboxed frame whose 'allow-popups' permission is not set.
বেনজমিন ক্রাউজিয়ার

6

এটি ক্রোম এবং ফায়ারফক্সে একটি নতুন ট্যাবে লিঙ্কটি খুলবে এবং সম্ভবত আরও বেশি ব্রাউজারগুলি আমি পরীক্ষা করে নি:

var popup  = $window.open("about:blank", "_blank"); // the about:blank is to please Chrome, and _blank to please Firefox
popup.location = 'newpage.html';

এটি মূলত একটি নতুন খালি ট্যাব খুলবে এবং তারপরে সেই খালি ট্যাবটির অবস্থান নির্ধারণ করে। সাবধান হন যে এটি হ্যাকের ধরণ, যেহেতু ব্রাউজার ট্যাব / উইন্ডো আচরণটি ব্রাউজার এবং ব্যবহারকারীর ডোমেন, দায়িত্ব এবং পছন্দ।

দ্বিতীয় লাইনটি একটি কলব্যাকে কল করা যেতে পারে (উদাহরণস্বরূপ আপনি কিছু এজেএক্স অনুরোধ করার পরে), তবে ব্রাউজারটি এটি ব্যবহারকারী-সূচিত ক্লিক-ইভেন্ট হিসাবে স্বীকৃতি দেয় না এবং পপআপটিকে অবরুদ্ধ করতে পারে।


1
$windowএটি কেবল AngularJS এর ​​ব্যবহারের উপায় window। আপনি কেবল windowপরিবর্তে ব্যবহার করতে পারেন । আরও তথ্য: docs.angularjs.org/api/ng/service/$window
ম্যাগনে


0

আপনি নতুন ট্যাবে খোলার জন্য এই কোডটি ব্যবহার করতে পারেন ..

function openWindow( url )
{
  window.open(url, '_blank');
  window.focus();
}

আমি এটি স্ট্যাকওভারফ্লো থেকে পেয়েছি ..


1
এটি কাজ করে তবে আপনি যদি কোনও ব্যবহারকারী ক্লিক হ্যান্ডলারে থাকেন তবেই। অন্যথায়, এটি একটি নতুন উইন্ডো খোলে (তবে ব্যবহারকারী এটির অনুমতি না দেওয়া পর্যন্ত ফায়ারফক্স অন্তত আপনাকে অবরুদ্ধ করবে)।
djsmith

@ ডিজেএসমিথ, আমি এটি ব্যবহার করছি .. এবং কেবল আইই 7 তে ইস্যুটির মুখোমুখি। আপনার যদি অন্য কোনও সমাধান থাকে তবে দয়া করে প্রস্তাব দিন .. আপনাকে ধন্যবাদ ..
দিলীপ রাজকুমার

-2

আমি ব্যবহারের সেরা উপায়:

1- আপনার এইচটিএমএলে লিঙ্ক যুক্ত করুন:

<a id="linkDynamic" target="_blank" href="#"></a>

2- জেএস ফাংশন যুক্ত করুন:

function OpenNewTab(href)
{
    document.getElementById('linkDynamic').href = href;
    document.getElementById('linkDynamic').click();
}

3- আপনি যে লিঙ্কটি চান তার সাথে কেবল ওপেননিউবট্যাব ফাংশনটি কল করুন

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