2012-06-14 14 views
11

Mam mały funkcji javascript, który otwiera URL w nowej karcie:window.open z docelowym „_blank” w Chrome

function RedirectToPage(status) { 
    var url = 'ObjectEditor.aspx?Status=' + status; 
    window.open(url , '_blank'); 
} 

To zawsze działa, gdy nazywa się po stronie klienta przez kliknięcie przycisku, nawet w chrom. Ale w Chrome to nie będzie działać, gdy jest wywoływana z po stronie serwera (!) Za pomocą

ScriptManager.RegisterClientScriptBlock() 

W Firefoksie i IE otwiera adres URL w nowej karcie, ale chrom otwiera link w nowym oknie . Co może być obejściem, które zmusza Chrome do otwarcia go w nowej karcie?

+3

Myślę, że jest to konfiguracja specyficzna dla przeglądarki Chrome. Nie można tego kontrolować za pomocą skryptu. – rcdmk

Odpowiedz

12

To ustawienie w chromie. Nie można kontrolować, w jaki sposób przeglądarka interpretuje cel: _blank.

+2

Ale dlaczego Chrome otwiera adres URL w nowej karcie, jeśli funkcja jest wywoływana po stronie klienta po kliknięciu przycisku? Po prostu nie działa, gdy jest wywoływana przy użyciu podejścia po stronie serwera. –

+1

Prawdopodobnie jest to blokowanie wyskakujących okienek. Wiele przeglądarek zabrania otwierania nowych okien bez niczego, ale umożliwia tworzenie nowych okien jako ewentualnego wyniku zdarzenia kliknięcia myszą. –

+0

Przeglądarki mają wewnętrzne zmienne, które wskazują informacje o sposobie i miejscu pochodzenia połączenia (stos najwyższych połączeń), np. przeglądarka zdecyduje się obsłużyć otwarcie (lub blokowanie) wyskakujących okienek w oddzielnym oknie lub nowej karcie w zależności od tego, czy wywołanie pochodzi z określonego zdarzenia (zdarzenie load vs zdarzenie click vs asynchroniczne wywołanie zwrotne). –

0

nie można zrobić, bo nie można mieć kontrolę nad sposobem Chrome otwiera okna

11

„_blank” nie jest gwarancją nową kartę lub okno. Jest zaimplementowany inaczej na każdą przeglądarkę.

Możesz jednak umieścić wszystko w celu. Zwykle po prostu mówię "_tab", a każda przeglądarka, którą znam, po prostu otwiera ją w nowej karcie.

Należy pamiętać, że oznacza to określony cel, więc jeśli spróbujesz otworzyć 2 adresy URL, użyją tej samej karty.

+1

+1 To powinna być poprawna odpowiedź. – mjsarfatti

0

Jak mówi Dennis, nie można kontrolować sposobu, w jaki przeglądarka wybiera obsługę obiektu docelowego = _blank.

Jeśli zastanawiasz się nad niespójnym zachowaniem, prawdopodobnie jest to blokowanie wyskakujących okienek. Wiele przeglądarek zabrania otwierania nowych okien bez niczego, ale umożliwia tworzenie nowych okien jako ewentualnego wyniku zdarzenia kliknięcia myszą.

0
window.open(skey, "_blank", "toolbar=1, scrollbars=1, resizable=1, width=" + 1015 + ", height=" + 800); 
+0

To nie odpowiada na pytanie. –

Powiązane problemy