Target='_blank' для отображения в новом окне, а НЕ в новой вкладке, возможно?

Как я могу это сделать?

В firefox ссылка открывается в новой вкладке... Я не хочу, чтобы пользователям приходилось устанавливать для этого настройки своих браузеров...

Я хочу, чтобы всплывающее окно появлялось с контактной формой всякий раз, когда пользователь нажимает «контакт» на моей главной странице.

Как мне это сделать?


person Community    schedule 02.12.2009    source источник
comment
Тебе действительно стоит передумать. Пользователь должен контролировать свое окружение. joelonsoftware.com/uibook/fog0000000249.html   -  person soulmerge    schedule 02.12.2009
comment
Я могу говорить только за себя, но: сайты, которые открывают всплывающие окна для чего-либо, автоматически получают вычитаемые баллы из моей книги. Если вам действительно нужен новый диалог, возможно, диалог JavaScript — модальный или нет — более удобен для пользователя? Например, диалоговое окно из пользовательского интерфейса jQuery: jqueryui.com/demos/dialog/#default   -  person Michael Stum    schedule 02.12.2009
comment
@soulmerge, сколько вы на самом деле знаете о варианте использования ОП? это общедоступный веб-сайт для B2C? возможно, это инструмент администратора для нее/него и коллег для внутреннего использования (маловероятно, но в моем случае это инструмент администратора). Я считаю, что Джоэл является причиной того, что Excel не был переписан и до сих пор остается самым раздражающим приложением, которое я использую (кроме Word), поэтому я не уверен, что он лучший человек для подражания с точки зрения UX. просто мысль.   -  person MemeDeveloper    schedule 19.02.2021
comment
Я только что перешел по ссылке, которую вы разместили на сайте Джоэла ... меню гамбургера и значок папки вверху слева без заголовка при наведении .... не за кем следовать для UX - если вы не хотите сделать систему такой же плохой, как веб-приложение insta для браузеров .   -  person MemeDeveloper    schedule 19.02.2021
comment
Моя истинная точка зрения - никогда не говори никогда... если только ты не уверен, что знаешь все детали всех вариантов использования, против которых когда-либо может быть закодирован код. ! ;)   -  person MemeDeveloper    schedule 19.02.2021
comment
@soulmerge пользователь должен наслаждаться своим окружением и считать его продуктивным. Я не хочу бесконечного контроля, я хочу делать дела и наслаждаться жизнью.   -  person MemeDeveloper    schedule 19.02.2021


Ответы (9)


Вы не можете это контролировать - это полностью на усмотрение пользовательского агента; в чем суть, в конце концов. Все, что вы можете указать, это то, что страница должна открываться в другом контексте области просмотра, и пользователь сам решает, как он хочет, чтобы ваше окно занимало их экранное пространство/список панели задач/сочетания клавиш Alt-Tab и т. д.

На самом деле я бы пошел еще дальше и сказал, что, если это вообще возможно, вам следует вообще избегать открытия новой вкладки/окна. Я знаю, что меня немного раздражает, когда веб-сайты делают это, и это кажется немного неуклюжим и 1990-м, со всеми Ajax, плавающими div и магией, которые мы имеем в наши дни.

person Andrzej Doyle    schedule 02.12.2009
comment
Это необходимо для таких потоков, как OAuth. И кажется, что другие совершили этот подвиг. - person Cunning; 25.06.2016
comment
Как Facebook делает это с их аутентификацией? Твиттер и пинтерест тоже? - person lcm; 19.03.2021
comment
@Icm все могло измениться за двенадцать лет с тех пор, как я опубликовал этот ответ. - person Andrzej Doyle; 31.03.2021

Это работает нормально

window.open(yoururl, "Popup", "location,status,scrollbars,resizable,width=800, height=800");

Все параметры см. в разделе window.open.

person M2012    schedule 29.04.2015
comment
У этого должно быть больше голосов. Хотя в конечном итоге это зависит от браузера, использование this указывает браузеру, что это должно быть всплывающее окно. - person John Harding; 15.07.2015
comment
Как это работает против блокировщика всплывающих окон? - person Kevin Dice; 06.08.2015
comment
Согласен с Джоном: ответ от Кирана ОК. Базовый window.open не работает: Firefox (например) открывается в новой вкладке. Но метод Кирана правильный. - person Peter; 27.11.2015

Я считаю, что это настройка только для браузера, которую нельзя установить из HTML или Javascript.

person Joe    schedule 02.12.2009
comment
Не может быть SET, но Javascript МОЖЕТ открыть новое окно, как указал @Mark Byers. - person adamdport; 05.09.2012

Когда я изучал эту проблему, я заметил, что части «высоты» и «ширины» функции window.open() заставляли ссылку открываться в новом окне, а не в новой вкладке.

Поэтому, чтобы открыть браузер аналогичного размера, я просто передал window.innerHeight и window.innerWidth функции window.open().

Я бы просто прокомментировал ответ @ M2012, но мне пока не хватает баллов...

Надеюсь это поможет!

person vancy-pants    schedule 07.11.2018

Если вы хотите использовать эту штуку с помощью Code Behind, она тоже сработает...

protected void lnkAddNewWorkout_Click(object sender, EventArgs e)
    {
  //  Response.Write("<script>window.open('MyCreatedWorkout.aspx','_blank');</script>");    //it Open in new tab

    ResponseHelper.Redirect("MyCreatedWorkout.aspx", "_blank", "menubar=0,width=700,height=700");

    }



 public static class ResponseHelper
    {
        public static void Redirect(string url, string target, string windowFeatures)
        {
            HttpContext context = HttpContext.Current;
        if ((String.IsNullOrEmpty(target) ||
            target.Equals("_self", StringComparison.OrdinalIgnoreCase)) &&
            String.IsNullOrEmpty(windowFeatures))
        {

            context.Response.Redirect(url);
        }
        else
        {
            Page page = (Page)context.Handler;
            if (page == null)
            {
                throw new InvalidOperationException(
                    "Cannot redirect to new window outside Page context.");
            }
            url = page.ResolveClientUrl(url);

            string script;
            if (!String.IsNullOrEmpty(windowFeatures))
            {
                script = @"window.open(""{0}"", ""{1}"", ""{2}"");";
            }
            else
            {
                script = @"window.open(""{0}"", ""{1}"");";
            }

            script = String.Format(script, url, target, windowFeatures);
            ScriptManager.RegisterStartupScript(page,
                typeof(Page),
                "Redirect",
                script,
                true);
        }
    }
}

Источник: http://www.codeproject.com/Tips/317410/Response-Redirect-into-a-new-window

person Durgesh Pandey    schedule 23.01.2016

Вы не можете контролировать это.

Но вы можете попробовать открыть в новом окне, а затем показать альтернативное решение, если браузер отклонит попытку.

Вы можете сделать это, проверив возвращаемое значение window.open().

var win = window.open(strUrl, strWindowName);
if (!win) {
    // Call failed. Handle it here. 
    // You can for example open content in a model or show a button that 
    // will open content in a new tab
}

документация по window.open: https://developer.mozilla.org/en-US/docs/Web/API/Window/open

person HoffZ    schedule 26.01.2016

Лучший способ открыть новое окно в HTML.

<a href="#" onclick="MM_openBrWindow('http://www.google.com','','resizable=yes,width=800,height=600')"> Google</a>

<script>
function MM_openBrWindow(theURL,winName,features) { //v2.0
  window.open(theURL,winName,features);
}
</script>
person Blackspade    schedule 09.12.2016
comment
Вопрос конкретно в отношении принудительного открытия нового окна, а не вкладки, и как Статья MDN для window.open() указывает, что маловероятно, что поведение будет таким, как хотелось бы, в современном браузере, хотя, по-видимому, это будет самый простой JS для открытия окна. . - person Jmills; 28.12.2016

Это также простой способ, но ссылка не видна, это подходит для действия кнопки.

<a onclick="window.open('print.html', 'newwindow', 'width=300,height=250');"> Print</a>
person A.A Noman    schedule 20.08.2017

person    schedule
comment
Я полагаю, вы имеете в виду window.open. - person Sean McMillan; 02.12.2009
comment
И _blank. И void, иначе ссылка на окно toString заменит текущий документ. И это все еще не работает (откроется в новом окне, если так настроен браузер). И недоступен из-за ненужного использования javascript: URL-адресов (никогда не используйте их). - person bobince; 02.12.2009
comment
Я, конечно, не думаю, что вы должны делать это, но вы можете. Недоступные URL-адреса javascript — это проблема, которую можно легко решить, изменив документ onLoad. - person Mark Byers; 02.12.2009
comment
Просто чтобы указать конкретную причину не использовать это для всех, кто наткнется на него, в соответствии с Mozilla: Никогда не используйте эту форму кода для ссылок: <a href="javascript:window.open(...)" ...> javascript: ссылки нарушают доступность и удобство использования веб-страниц в любом браузере. - person Neal Gokli; 25.01.2019