2009-12-02 6 views
15

Как это сделать?Target = '_ blank', чтобы показать в новом окне, а не новую вкладку, возможно?

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

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

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

+11

Вы должны действительно пересмотреть. Пользователь должен контролировать свою среду. http://www.joelonsoftware.com/uibook/fog0000000249.html – soulmerge

+1

Я могу говорить только для себя, но: Сайты, открывающие всплывающие окна для чего-либо, автоматически получают вычитаемые баллы в моей книге. Если вам действительно нужен новый диалог, возможно, JavaScript Dialog - modal или нет - более удобен для пользователя? Например, диалог из jQuery UI: http://jqueryui.com/demos/dialog/#default –

ответ

27

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

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

+2

Это необходимо для потоков, таких как OAuth.И, похоже, другие совершили этот подвиг. – Cunning

3

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

+1

и не должно быть. – Broam

+2

Не может быть SET, но Javascript МОЖЕТ открыть новое окно, как отметил @Mark Byers. – adamdport

11
<a href="javascript:window.open('http://example.com/popup.html','blank')">Contact</a> 
+0

Я считаю, вы имеете в виду window.open. –

+2

И '_blank'. И 'void', иначе ссылка на окно 'toString' заменит текущий документ. И он по-прежнему не работает (откроется в новом окне, если именно так настроен браузер). И недоступно из-за ненужного использования 'javascript:' URL (никогда не используйте их). – bobince

+0

Я, конечно, не думаю, что вы должны это сделать, но можете. Недопустимые URL-адреса javascript - это проблема, которую можно легко решить, изменив документ onLoad. –

-8

Вы не можете указать ссылку, открывающуюся на новой вкладке - помните, что не все браузеры поддерживают вкладки!

+4

Но это не то, что он спросил. –

14

Это работает отлично

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

Для всех параметров см window.open

+1

У этого должно быть больше upvotes. Хотя это в конечном счете до браузера, использование этого указывает браузеру, что оно должно быть всплывающим. –

+0

Как это связано с блокировщиком всплывающих окон? –

+0

Согласитесь с Джоном: ответ от Kiran os OK. Базовые window.open не работают: Firefox (например) открывается на новой вкладке. Но метод Кирана прав. – Peter

0

Если вы хотите использовать эту вещь, используя код За то он также будет работать ...

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); 
     } 
    } 
} 

Refrenced По: http://www.codeproject.com/Tips/317410/Response-Redirect-into-a-new-window

0

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

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

Вы можете выполнить это, проверив возвращаемое значение 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

0

Лучший способ, чтобы открыть новое окно в 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> 
+0

Вопрос конкретно в том, что нужно форматировать новое окно для открытия, а не как вкладку, и как [статья MDN] (https://developer.mozilla.org/en-US/docs/Web/API/Window/open #Usability_issues) для window.open() указывает, что маловероятно, что поведение будет таким же, как хотелось бы в современном браузере, хотя это, казалось бы, было бы самым простым JS, чтобы открыть окно. – Jmills

0

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

<a onclick="window.open('print.html', 'newwindow', 'width=300,height=250');"> Print</a> 
Смежные вопросы