2014-04-29 14 views
13

Quando uso window.open ("www.google.com", "_blank");window.open() aggiunge semplicemente l'url al mio URL corrente

window.open("www.google.com", "_blank"); 

una nuova scheda viene aperta, ma l'url non è "www.google.com", è "= url-i-ero-at =/www.google.com".

Questo è uno snippet del codice (e l'unico codice rilevante).

In jsfiddle si comporta in modo leggermente diverso, ma continua a non funzionare come dovrebbe.

Cosa sto sbagliando?

+2

'www.google.com' sarebbe un percorso locale, facendo riferimento ad esempio a una directory con lo stesso nome sul tuo server. Quello che ti serve per collegarti a un dominio esterno è invece un URL assoluto, quindi qualcosa come http: // www.google.com/'. – CBroe

+5

Non sono sicuro del motivo per cui questo è stato così pesantemente downvoted. È una domanda valida con una soluzione chiara. – Alex

risposta

14

Si voleva accedere al documento principale del server di www.google.com, che viene fatto utilizzando l'URL http://www.google.com/. Hai invece fornito un url relativo al documento www.google.com.

+1

Grande, grazie! Perché include http: // risolverlo anche se? HTML/JS o qualunque controllo cerca l'http e se non lo trova lo interpreta come un url relativo? –

+2

Forse un esempio sarà d'aiuto. 'window.open' accetta gli url relativi e assoluti. Se chiami 'window.open (" popup.html "," _blank ")' da 'http: // www.example.com/dir/foo.html', si aprirà' http: //www.example. com/dir/popup.html'. Se chiami 'window.open (" www.google.com "," _blank ")' dalla stessa pagina, si aprirà 'http: // www.example.com/dir/www.google.com'. Il browser non ha modo di sapere che in realtà desideri "http: // www.google.com /" quando hai detto di volere "http: // www.example.com/dir/www.google.com". – ikegami

1

Prefazione gli URL con http://

7

si deve anteporre http:// nel vostro url:

$(document).ready(function() { 
    $('#mybtn').on('click', function() { 
     window.open("http://www.google.com", '_blank'); 
    }); 
}); 

Fix: http://jsfiddle.net/FUYTY/4/

3

Prova ad aggiungere http: // in precedenza (vedi Fiddle http://jsfiddle.net/lkritchey/FUYTY/3/)

$(document).ready(function() { 
    $('#mybtn').on('click', function() { 
     window.open("http://www.google.com", '_blank'); 
    }); 
}); 

Qualche informazione in più: Se si include in anticipo un '/', aggiunge la stringa all'URL radice. Se si elenca solo la stringa, la aggiunge all'URL completo corrente. Se includi http: // o https: // sa di utilizzare solo ciò che inserisci nella stringa (ad esempio http://www.google.com)