У мене є вікно вибору, яке дзвонить, window.open(url)
коли вибрано елемент. Firefox відкриє сторінку на новій вкладці за замовчуванням. Однак я хотів би, щоб сторінка відкривалася в новому вікні, а не в новій вкладці.
Як я можу це досягти?
У мене є вікно вибору, яке дзвонить, window.open(url)
коли вибрано елемент. Firefox відкриє сторінку на новій вкладці за замовчуванням. Однак я хотів би, щоб сторінка відкривалася в новому вікні, а не в новій вкладці.
Як я можу це досягти?
Відповіді:
Дайте вікну параметр "специфікації" з шириною / висотою. Тут можна переглянути всі можливі варіанти.
window.open(url, windowName, "height=200,width=200");
Коли ви вкажете ширину / висоту, вона відкриє її в новому вікні замість вкладки.
Вам не потрібно використовувати висоту, просто переконайтеся, що ви використовуєте _blank
, Без цього він відкриється в новій вкладці.
Для порожнього вікна:
window.open('', '_blank', 'toolbar=0,location=0,menubar=0');
Для конкретної URL-адреси:
window.open('http://www.google.com', '_blank', 'toolbar=0,location=0,menubar=0');
location=0
це потрібно, коли в JS викликається кнопка або елемент кріплення.
location=0
параметри. Я б також запропонував назвати вікно, а не використовувати _blank
ціль, щоб те саме вікно було використане знову, якщо користувач натискає кілька разів елемент, що відкриває спливаюче вікно, і з'єднати з focus()
таким чином, щоб фокус вже відкрився спливаючого вікна:window.open('http://stackoverflow.com', 'Stack_Overflow','location=0').focus();
Можливо, я помиляюся, але, наскільки я розумію, це контролюється налаштуваннями браузера користувача, і я не вірю, що це можна перекрити.
Спробуйте:
window.open("", [window name], "height=XXX,width=XXX,modal=yes,alwaysRaised=yes");
У мене є якийсь код, який робить те, що ви говорите, але в ньому багато параметрів. Я думаю, що це мінімальний мінімум, дайте мені знати, якщо це не працює, я опублікую решту.
ОК, після того, як зробив багато тесту, ось мій висновок:
Коли ви виконуєте:
window.open('www.yourdomain.tld','_blank');
window.open('www.yourdomain.tld','myWindow');
або все, що ви введете в поле призначення, це нічого не змінить: нова сторінка відкриється на новій вкладці (так залежить від уподобань користувача)
Якщо ви хочете, щоб сторінка була відкрита в новому "справжньому" вікні, ви повинні ввести додатковий параметр. Подібно до:
window.open('www.yourdomain.tld', 'mywindow','location=1,status=1,scrollbars=1, resizable=1, directories=1, toolbar=1, titlebar=1');
Після тестування здається, що додатковий параметр, який ви використовуєте, не має насправді значення: це не факт, що ви ставите "цей параметр" або "цей інший", який створює нове "реальне вікно", а факт, що є новий параметр (s ).
Але щось плутається і може пояснити багато неправильних відповідей:
Це:
win1 = window.open('myurl1', 'ID_WIN');
win2 = window.open('myurl2', 'ID_WIN', 'location=1,status=1,scrollbars=1');
І це:
win2 = window.open('myurl2', 'ID_WIN', 'location=1,status=1,scrollbars=1');
win1 = window.open('myurl1', 'ID_WIN');
НЕ дасть однакового результату.
У першому випадку, коли ви вперше відкриєте сторінку без зайвих параметрів, вона відкриється на новій вкладці . І в цьому випадку другий дзвінок також буде відкритий на цій вкладці через ім’я, яке ви даєте.
У другому випадку, коли ваш перший дзвінок здійснюється з додатковим параметром, сторінка буде відкрита в новому " реальному вікні ". І в цьому випадку, навіть якщо другий дзвінок буде здійснено без додаткового параметра, він також буде відкритий у цьому новому " реальному вікні " ... але в тій же вкладці!
Це означає, що перший дзвінок важливий, оскільки він вирішив, де розмістити сторінку.
Вам не потрібно. Дозвольте користувачеві мати будь-які уподобання.
Firefox робить це за замовчуванням, тому що відкриття сторінки в новому вікні дратує, і сторінку ніколи не можна дозволяти робити, якщо це не те, що бажає користувач. (Firefox дозволяє відкривати вкладки в новому вікні, якщо ви його встановите таким чином).
Ви можете спробувати наступну функцію:
<script type="text/javascript">
function open(url)
{
var popup = window.open(url, "_blank", "width=200, height=200") ;
popup.location = URL;
}
</script>
HTML-код для виконання:
<a href="#" onclick="open('http://www.google.com')">google search</a>
popup.location = URL;
? window.open()
Виклик повинен відкрити його в відповідний URL, і в вашому прикладі коду, URL
не визначений , так що буде падати назад до експериментальних (і не широко підтримка) об'єкта URL . Хоча використовувати його для того, що є дискусійним, мені цікаво, які мотиви для його використання тут?
Цікаво, що я виявив, що якщо ви перейдете в порожню рядок (на відміну від нульової рядка або списку властивостей) для третього атрибуту window.open, він відкриється в новій вкладці для Chrome, Firefox та IE. Якщо вона відсутня, поведінка була іншою.
Отже, це мій новий дзвінок:
window.open(url, windowName, '');
спробуйте цей метод .....
function popitup(url) {
//alert(url);
newwindow=window.open("http://www.zeeshanakhter.com","_blank","toolbar=yes,scrollbars=yes, resizable=yes, top=500, left=500, width=400, height=400");
newwindow.moveTo(350,150);
if (window.focus)
{
newwindow.focus()
}
return false;
}
Для мене рішення було мати
"location=0"
у 3-му параметрі. Тестовано на останньому FF / Chrome та старій версії IE11
Повний дзвінок методу, який я використовую, наведений нижче (Оскільки я люблю використовувати змінну ширину):
window.open(url, "window" + id, 'toolbar=0,location=0,scrollbars=1,statusbar=1,menubar=0,resizable=1,width=' + width + ',height=800,left=100,top=50');
Я просто спробував це з IE (11) та Chrome (54.0.2794.1 канар SyzyASan):
window.open(url, "_blank", "x=y")
... і воно відкрилося в новому вікні.
Що означає, що Клінт pachl мав це право, коли сказав, що надання будь-якого одного параметра призведе до відкриття нового вікна.
- і, мабуть, це не повинно бути законним параметром!
(YMMV - як я вже сказав, я перевірив його лише в двох місцях ... і наступне оновлення може визнати недійсними результати будь-яким чином)
ЕТА: Хоча я щойно помітив - у IE на вікні немає прикрас.
Відповіли тут . Але розміщуємо його знову для довідки.
window.open()
не відкриється в новій вкладці, якщо це не відбувається в реальній події клацання. У наведеному прикладі URL відкривається для фактичної події натискання. Це буде працювати за умови, що користувач має відповідні налаштування в браузері.
<a class="link">Link</a>
<script type="text/javascript">
$("a.link").on("click",function(){
window.open('www.yourdomain.com','_blank');
});
</script>
Аналогічно, якщо ви намагаєтеся робити дзвінок в Ajax у межах функції клацання і хочете відкрити вікно про успіх, переконайтеся, що ви здійснюєте виклик Ajax з async : false
набором опцій.
У мене було те саме питання, але я знайшов відносно просте його рішення.
У JavaScript я перевіряв, window.opener !=null;
щоб визначити, чи не з'явилося вікно. Якщо ви використовуєте якийсь подібний код виявлення, щоб визначити, чи відображається вікно, на яке ви розміщуєте веб-сайт, ви можете легко "вимкнути його", коли ви хочете відкрити "нове" вікно за допомогою нового вікна JavaScript.
Просто поставте це вгорі сторінки, де ви хочете, щоб завжди було "нове" вікно.
<script type="text/javascript">
window.opener=null;
</script>
Я використовую це на сторінці входу на свій сайт, щоб користувачі не з’являлися, якщо вони користуються спливаючим вікном для переходу до мого сайту.
Ви навіть можете створити просту сторінку переспрямування, яка це робить, а потім переміщується до вказаної вами URL-адреси. Щось на зразок,
JavaScript на батьківській сторінці:
window.open("MyRedirect.html?URL="+URL, "_blank");
А потім, скориставшись трохи JavaScript, звідси ви можете отримати URL-адресу та переспрямувати її.
JavaScript на сторінці перенаправлення:
<script type="text/javascript">
window.opener=null;
function getSearchParameters() {
var prmstr = window.location.search.substr(1);
return prmstr != null && prmstr != "" ? transformToAssocArray(prmstr) : {};
}
function transformToAssocArray( prmstr ) {
var params = {};
var prmarr = prmstr.split("&");
for ( var i = 0; i < prmarr.length; i++) {
var tmparr = prmarr[i].split("=");
params[tmparr[0]] = tmparr[1];
}
return params;
}
var params = getSearchParameters();
window.location = params.URL;
</script>