بعضی مواقع احتیاج دارید که به کمک Javascript یک URL رو در تب جدید باز کنید. در این مطلب با مشکلات این زمینه آشنا میشیم و یاد میگیریم که چطور کارهای مورد نظرمون رو انجام بدیم.
یکی از سادهترین و متداولترین روش هایی که ممکنه بهتون پیشنهاد بشه استفاده از دو کد زیر هست:
window.open(url,'_blank'); // یا window.open(url);
اما اگر این دو کد رو اجرا کنید متوجه میشید که مرورگر با اون URL مانند یک popup window برخورد میکنه و به طور پیش فرض اجازه باز شدن اون tab رو نمیده. حتما با این مورد مواجه شدید. مثلا وارد سایتی میشید و اون سایت بدون اینکه شما کاری انجام بدین و بدون اینکه از شما اجازه بگیره، تعداد زیادی پنجره و آدرسهایی که مورد نظر خودش هست رو باز میکنه. اخیرا مرورگرها با این مورد برخورد میکنن و جلوی اونا رو میگیرن و بهشون Popup Blocker میگن.
در کد بالا هم چون ما مستقیم و بدون اجازه کاربر داریم از window.open استفاده میکنیم پس مرورگر هم فکر میکنه که popup هست و به همین حاطر با اون برخورد میکنه.
پس راه حل چیه؟
ترفندی وجود داره که شما میتونید به کمک تعریف یک function به هدف دلخواهتون برسید. به کد زیر توجه کنید:
function openInNewTab(url) { var win = window.open(url, '_blank'); win.focus(); }
همونطور که میبینید یک تابع تعریف کردیم و یک url رو به اون پاس میدیم و اون url در تب جدید باز میشه و focus بر روی اون قرار میگیره.
شما میتونید کدتون رو طوری تعریف کنید که به ازای رخداد یک رویداد خاص مانند کلیک، دبل کلیک، لمس کردن صفحه در دستگاههای لمسی و ...، URL مورد نظردر یک tab جدید باز بشه و مرورگر دیگه اون لینک رو به عنوان یک popup window نمیشناسه.
پس اگر زمانی که خود کاربر کاری رو انجام میده (مانند کلیک کردن)، از window.open استفاده کنیم، مرورگر دیگه به اون گیر نمیده و url رو باز میکنه. بخاطر همینه که در سایتهای تبلیغاتی زمانی که در جاهای مختلف کلیک میکنید، پنجرههای مختلفی باز میشه و مرورگر هم با اونا برخورد نمیکنه.
اگر شما هم روشی برای انجام اینکار به ذهنتون میرسه خوشحال میشیم که در بخش نظرات با ما در میان بذارید.
نمونه کد رو هم میفرستم
میشه از این روش برای کد تبلیغاتی متغییر هم استفاده بکنیم اگه بلد هستید حاظر هستم مبلغی هم پرداخت کنم
من میخوام کدی داشته باشم که از بین لینک تبلیغاتی که در سایت میاد و با هر رفرش تغییر میکنه بطور اتومات بره به اون صفحه در پنجره جداگانه و بدون ازیت بازدید کننده