2011-11-28 22 views
6

Come posso recuperare l'URL completo a cui un collegamento di ancoraggio utilizza jQuery/JavaScript in modo coerente su tutti i browser? Ad esempio, voglio restituire http://www.mysite.com/mypage.aspx da <a href="../mypage.aspx"></a>.Ottieni l'URL completo da un collegamento ipertestuale usando jQuery/JavaScript

Ho provato quanto segue:

  1. $(this).attr('href'): Il problema è che jQuery restituisce il valore esatto della href (cioè ../mypage.aspx).

  2. this.getAttribute('href'): funziona in Internet Explorer, ma in FireFox si comporta come sopra.

Qual è l'alternativa? Non posso semplicemente aggiungere il percorso del sito corrente al valore href perché non funzionerebbe nel caso precedente in cui il valore di href sfugge alla directory corrente.

+0

Eventuali duplicati di http://stackoverflow.com/questions/303956/jquery-select-a-which-href-contains-some-string –

+0

È potrebbe voler controllare questa domanda http://stackoverflow.com/questions/470832/getting-an-absolute-url-from-a-relative-one-ie6-issue –

+1

@sputnick, non è sicuramente un duplicato di quello. Questa sembra la tua domanda di base sulla superficie, ma è un po 'più complicata. –

risposta

5

È possibile creare un elemento img e quindi impostare l'attributo src sul valore href recuperato. Quindi, quando recuperi l'attributo src, sarà pienamente qualificato. Ecco un esempio di funzione che ho usato da http://james.padolsey.com/javascript/getting-a-fully-qualified-url/:

function qualifyURL(url){ 
    var img = document.createElement('img'); 
    img.src = url; // set string url 
    url = img.src; // get qualified url 
    img.src = null; // no server request 
    return url; 
} 
+0

Per chiarire, questo funziona in tutti i browser che ho provato: IE 6-9, Chrome, FireFox e Safari. –

+1

Nota che, almeno in Chrome, questo * causerà * una richiesta server per l'URL. – user113215

Problemi correlati