2014-04-02 16 views
7

Sto cercando di farlo in modo che quando si fa clic su un collegamento in un si aprirà il collegamento in una nuova scheda, non nello . Si prega di notare che non ho il controllo del contenuto che le persone stanno visualizzando attraverso lo .Come rendere tutti i collegamenti in un iframe aperto in una nuova scheda

Sto provando a farlo con javascript possibilmente, come $('a').setAttribute('target','_blank'); ma non sta funzionando per me. Ho anche nel mio documento HTML <base target="_blank">, che non sta facendo il trucco troppo.

È impossibile? O sto solo cercando nei posti sbagliati? Grazie in anticipo!

+1

la pagina iframe è da stesso dominio ?? –

+1

try parent.window.open ("{{your location}}"); –

+1

domanda simile? http://stackoverflow.com/questions/17128889/links-within-an-iframe-window-to-open-in-new-tab?rq=1 –

risposta

7

mi aspetto questo:

$('a').setAttribute('target','_blank'); 

.. fallire (silenziosamente - perché jquery generalmente fallisce in modo silenzioso) perché, se il contenuto dell'iFrame proviene da un dominio diverso, ci sono accesso problemi con la manipolazione della pagina all'interno di iFrame dalla pagina contenente.

Ovvero: se la propria pagina proviene dal dominio a (ad esempio mysite.com) e l'iframe proviene dal dominio b (ad es. Someothersite.com), il comportamento di sicurezza del browser Web è tale che l'utilizzo di javascript per manipolare l'iFrame il contenuto restituirà un errore "Accesso negato".

Se si dovesse utilizzare javascript non jquery, verrà visualizzato l'errore. Dalla pagina padre, qualcosa di simile a questo:

window.frames["iFrameName"].getElementsByTagName("a")[0].target="_blank" 

vedrai l'errore.

Purtroppo non sono sicuro di cosa si possa fare a riguardo. È una cosa deliberata fermare un sito Web che include un altro e cambiare il contenuto dopo averlo caricato, in modo che venga detto qualcos'altro.

Un modo per aggirarlo sarebbe chiamare uno script sul server (cioè lo stesso dominio) e passare un URL. Lo script ottiene il contenuto della pagina che cercavi e rigurgita nel tuo browser, così avrai il contenuto della pagina web desiderata ma l'indirizzo era all'interno del tuo sito .. es. Se fosse php:

http://yourdomain.com/getURL.php?url=http:www.google.com

guardare fuori per problemi con l'autenticazione non se

+1

grazie !!! funziona –

7

per caricare tutti i link sulla pagina nell'uso finestra padre:

<base target="_parent" /> 

altro in una nuova finestra di utilizzo:

<base target="_blank" /> 
1

Uso $('a').attr('target','_blank'); invece di setAttribute ...

FIDDLE

+1

Gli stai semplicemente dicendo di usare una notazione JavaScript diversa. In che modo questo risolve la domanda? Questo sarebbe meglio servire come commento rispetto a una risposta. – AlbatrossCafe

+0

Ho upvoted perché risolve il JS proposto. OP ha avuto due problemi. – Citizen

1

Sostituire target='blank' con onclick='window.open();'

+0

Lol, questa è l'unica cosa che ha funzionato in realtà con tutte le altre soluzioni che ho provato. Grazie mille! – odedta

1

utilizzando JavaScript

var links= document.getElementsByTagName('a'); 
for (var i=0; i<links.length; i++){ 
    links[i].setAttribute('target', '_top'); 
} 

utilizzando jQuery

$('a').each(function() { 
    var a = new RegExp('/' + window.location.host + '/'); 
    if (!a.test(this.href)) { 
     $(this).attr("target","_top"); 
    } 
}); 
Problemi correlati