2011-01-30 9 views
13

Non so abbastanza di javascript per capire perché la riga in questo script che inizia "window.open ..." genera un errore argomento non valido in IE7- 8-9b. Funziona bene con Firefox e Webkit.window.open genera argomenti non validi in IE7-8-9b

(Lo script è invocato con un onclick="share.fb()" in un collegamento html e apre una nuova finestra del browser da condividere su FB e Twitter).

var share = { 
    fb:function(title,url) { 
    this.share('http://www.facebook.com/sharer.php?u=##URL##&t=##TITLE##',title,url); 
    }, 
    tw:function(title,url) { 
    this.share('http://twitter.com/home?status=##URL##+##TITLE##',title,url); 
    }, 
    share:function(tpl,title,url) { 
    if(!url) url = encodeURIComponent(window.location); 
    if(!title) title = encodeURIComponent(document.title); 

    tpl = tpl.replace("##URL##",url); 
    tpl = tpl.replace("##TITLE##",title); 

    window.open(tpl,"sharewindow"+tpl.substr(6,15),"width=640,height=480"); 
    } 
    }; 
+0

Hai provato commutare il this.share' a 'share.share' in quelli' 'e' fb' tw' funzioni? – sdleihssirhc

risposta

33

IE non consente spazi e altri caratteri speciali nel nome della finestra (il secondo argomento). Devi rimuoverli prima di passare come argomento.

Sostituire

"sharewindow"+tpl.substr(6,15) 

da

"sharewindow"+tpl.substr(6,15).replace(/\W*/g, '') 

in modo che si finisce con

window.open(tpl,"sharewindow"+tpl.substr(6,15).replace(/\W*/g, ''),"width=640,height=480"); 

(che è fondamentalmente una sostituzione regex che dice "sostituire ogni sequenza di non-aplhabetic carattere di nulla ")

Demo online here (se necessario configurare il vostro popup blocker)

+0

Come rimuovere gli spazi? Non ho scritto il JS, l'ho appena trovato. – markratledge

+0

Vedere aggiornamento della risposta. – BalusC

+0

Grazie, ma ancora un errore argomento non valido. C'è uno spazio tra le due virgolette singole? – markratledge

Problemi correlati