2011-01-30 13 views
13

Nie wiem wystarczająco dużo o javascript, aby dowiedzieć się, dlaczego linia w tym skrypcie, która zaczyna się "window.open ...", zgłasza nieprawidłowy błąd argumentu w IE7- 8-9b. Działa dobrze w Firefox i Webkit.window.open wyrzuca nieprawidłowy argument w IE7-8-9b

(Skrypt jest oznaczony numerem onclick="share.fb()" w łączu html i wyskakuje nowe okno przeglądarki, aby udostępnić je na stronach FB i 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

Próbowałaś przełączania '' share.share' this.share' aby w tych '' tw' fb' i funkcje? – sdleihssirhc

Odpowiedz

33

IE blokuje spacje i inne znaki specjalne w nazwie okna (drugi argument). Musisz je usunąć przed przekazaniem jako argumentem.

Wymień

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

przez

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

tak aby skończyć z

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

(to w zasadzie wymiana regex który mówi „zastąpić każdą sekwencję non-aplhabetic charakter przez nic ")

żywo demo here (skonfigurować razie potrzeby wyskakujących okienek)

+0

Jak mogę usunąć spacje? Nie napisałem JS, tylko znalazłem. – markratledge

+0

Zobacz odpowiedź aktualizacji. – BalusC

+0

Dzięki, ale nadal nieważny błąd argumentu. Między tymi dwoma pojedynczymi cytatami jest spacja? – markratledge

Powiązane problemy