Sto cercando di "forzare" Safari o IE7 ad aprire una nuova pagina utilizzando una nuova scheda .
A livello di codice intendo qualcosa come:
window.open('page.html','newtaborsomething');
Sto cercando di "forzare" Safari o IE7 ad aprire una nuova pagina utilizzando una nuova scheda .
A livello di codice intendo qualcosa come:
window.open('page.html','newtaborsomething');
Risposte:
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, OPPURE si aprirà in una nuova scheda, se l'utente ha configurato il browser per farlo.
Puoi, in Firefox funziona, aggiungere l'attributo target = "_ newtab" all'ancoraggio 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 dovresti forzare l'utente ad aprire nuove pagine o una nuova scheda senza mostrare loro un suggerimento su ciò che accadrà prima di fare clic sul collegamento.
Fammi sapere se funziona anche su altri browser (al momento non ho la possibilità di provarlo su browser diversi da Firefox).
Modifica: aggiunto riferimento per ie7 Forse questo collegamento può essere utile
http://social.msdn.microsoft.com/forums/en-US/ieextensiondevelopment/thread/951b04e4-db0d-4789-ac51-82599dc60405/
Quelli di voi che cercano di utilizzare quanto segue:
window.open('page.html', '_newtab');
dovrebbe davvero guardare il metodo window.open.
Tutto quello che stai facendo è dire al browser di aprire una nuova finestra NOMINATA "_newtab" e caricare page.html in essa. Ogni nuova pagina che carichi verrà caricata in quella finestra. Tuttavia, se un utente ha il proprio browser impostato per aprire nuove pagine in nuove schede invece che in nuove finestre, si aprirà una scheda. Indipendentemente da ciò, utilizza lo stesso nome per la finestra o la scheda.
Se desideri che pagine diverse si aprano in finestre o schede diverse, dovrai cambiare 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 pagina1, pagina2, pagina3, ecc. Invece di _newtab2.
Sta all'utente se desidera utilizzare nuove schede o nuove finestre, non è compito dello sviluppatore modificare questo comportamento. Non credo che tu possa farlo.
Pet peeve del mio - odio quando i siti mi costringono ad aprirmi in una nuova finestra / scheda - sono abbastanza capace di prendere quella decisione per me stesso. Soprattutto quando lo fanno in javascript, è davvero inutile.
Hai già provato come
var open_link = window.open('','_blank');
open_link.location="somepage.html";
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;
});
Questo è utile per distinguere tra gli eventi di clic di un genitore in un bambino. Utilizzando questo metodo, non si attiva l'evento clic del genitore.
<a href="page.html" target="_blank">foo</a>
Funziona al 100%
window.open('http://www.google.com/','_newtab' + Date.now());
Se lo desideri, puoi utilizzare questo metodo, che è un po 'hacky, 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()
Questo potrebbe funzionare se puoi chiamare un file batch (io uso php con XP sp2 e IE8 ... puoi provare IE7, non so). Utilizzare quanto segue (o simile) nel file .bat per aprire Windows: Start "" 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 potrebbe iniziare ad aprire nuove finestre (ad esempio, target = "_ blank") piuttosto che nuove schede, ma funziona fino a un certo punto; non ampiamente testato. Per utilizzarlo in un normale file batch (CMD.exe), probabilmente è necessario disporre di una finestra già aperta. Sto solo condividendo qualcosa in cui sono incappato. MODIFICATO per chiarimenti.
<a href="http://www.google.com/" target="_self">New Tab Example</a>
Funziona in IE7.
Saluti,
Glenn