Domanda

Sto cercando di " forzare " Safari o IE7 per aprire una nuova pagina utilizzando una nuova scheda .

A livello di programmazione intendo qualcosa come:

window.open('page.html','newtaborsomething');
È stato utile?

Soluzione

Non puoi controllarlo direttamente, perché è un'opzione controllata dagli utenti di Internet Explorer.

L'apertura di pagine utilizzando Window.open con un nome di finestra diverso si aprirà in una nuova finestra del browser come un popup, O si aprirà in una nuova scheda, se l'utente ha configurato il browser per farlo.

Altri suggerimenti

Puoi, in Firefox, aggiungere l'attributo target = " _newtab " all'ancora per forzare l'apertura di una nuova scheda.

<a href="some url" target="_newtab">content of the anchor</a>

In javascript puoi usare

window.open('page.html','_newtab');

Detto questo, sono parzialmente d'accordo con Sam. Non devi forzare l'utente ad aprire nuove pagine o nuove schede senza mostrare loro un suggerimento su cosa accadrà prima di fare clic sul collegamento.

Fammi sapere se funziona anche su altri browser (al momento non ho la possibilità di provarlo su un browser diverso da Firefox).

Modifica: aggiunto riferimento per ie7 Forse questo link può essere utile
http: // social. msdn.microsoft.com/forums/en-US/ieextensiondevelopment/thread/951b04e4-db0d-4789-ac51-82599dc60405/

Quelli di voi che stanno cercando di usare quanto segue:

window.open('page.html', '_newtab');

dovrebbe davvero guardare al metodo window.open.

Tutto quello che stai facendo è dire al browser di aprire una nuova finestra NAMED " _newtab " e carica page.html al suo interno. Ogni nuova pagina caricata verrà caricata in quella finestra. Tuttavia, se un utente ha il proprio browser impostato per aprire nuove pagine in nuove schede anziché nuove finestre, verrà aperta una scheda. Indipendentemente da ciò, sta usando lo stesso nome per la finestra o la scheda.

Se si desidera aprire pagine diverse in finestre o schede diverse, è necessario modificare il NOME della nuova finestra / scheda in qualcosa di diverso come:

window.open('page2.html', '_newtab2');

Ovviamente il nome per la nuova finestra / scheda potrebbe essere qualsiasi nome come page1, page2, page3, ecc. anziché _newtab2.

Spetta all'utente se desidera utilizzare nuove schede o nuove finestre, non è compito dello sviluppatore modificare questo comportamento. Non credo che tu possa farlo.

La mia pipì da compagnia - lo odio quando i siti mi costringono ad aprire in una nuova finestra / scheda - Sono abbastanza capace di prendere quella decisione da solo. Soprattutto quando lo fanno in javascript - è davvero inutile.

Hai già provato come

var open_link = window.open('','_blank');
open_link.location="somepage.html";

L'ho scoperto in Chrome,

window.open('page.html','_newtab')

funzionerà solo una volta.

Puoi usare:

window.open(ct.getNewHref(),'_newtab' + Math.floor(Math.random()*999999));

Per aprire più nuove schede.

Il codice che uso con jQuery:

$("a.btn_external").click(function() {
    url_to_open = $(this).attr("href");
    window.open(url_to_open, '_blank');
    return false;
});

Ciò è utile per distinguere tra gli eventi clic di un genitore in un figlio. Utilizzando questo metodo, non si attiva l'evento click del genitore.

Se lo desideri, puoi utilizzare questo metodo, che è un po 'confuso, ma offrirebbe la funzionalità desiderata:

jQuery('<a/>', {
    id: 'foo',
    href: 'http://google.com',
    title: 'Become a Googler',
    rel: 'external',
    text: 'Go to Google!',
    target:'_blank',
    style:'display:none;'
}).appendTo('#mySelector');

$('#foo').click()

Funziona al 100%

window.open ('http://www.google.com/','_newtab' + Date.now ());

Questo potrebbe funzionare se puoi chiamare un file batch (uso php con XP sp2 e IE8 ... puoi provare IE7, non lo so). Utilizzare il seguente (o simile) nel file .bat per aprire Windows: Inizia " " C: \ Progra ~ 1 \ Intern ~ 1 \ iexplore " http: //www.site.com" ;. Non c'è spazio tra le virgolette e C: \ Progr ... ecc. Ad un certo punto, questo può iniziare ad aprire nuove finestre (cioè target = " _blank ") anziché nuove schede, ma funziona fino a un certo punto ; non ampiamente testato. Per usarlo in un normale file batch (CMD.exe), probabilmente è necessario che sia già aperta una finestra. Sto solo condividendo qualcosa in cui mi sono imbattuto. MODIFICATO per chiarimenti.

<a href="http://www.google.com/" target="_self">New Tab Example</a>

Funziona in IE7.

Saluti,

Glenn

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top