Fenster.öffnen Sie wirft ungültiges argument in IE7-8-9b
Ich weiß nicht genug über javascript, um herauszufinden, warum die Zeile in diesem Skript, das beginnt " - Fenster.öffnen..." wirft einen invalid argument Fehler in IE7-8-9b. Funktioniert einwandfrei in Firefox und Webkit.
(Das Skript ist angesprochen mit einem onclick="share.fb()"
in ein html-link und öffnet ein neues browser-Fenster zu teilen bei FB und 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");
}
};
- Haben Sie versucht, die Umschaltung der
this.share
zushare.share
in diesenfb
undtw
Funktionen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
IE verbietet Leerzeichen und andere Sonderzeichen im Fenster den Namen (zweites argument). Sie müssen, um Sie zu entfernen, bevor die übergabe als argument.
Ersetzen
durch
so, dass Sie am Ende mit
(das ist im Grunde ein regex-Ersatz, die sagt "ersetzen jede Folge von nicht-aplhabetic Charakter durch nichts")
Live-demo hier (konfigurieren Sie gegebenenfalls Ihren popup-blocker)
alert("sharewindow"+tpl.substr(6,15))
um es zu sehen.replace(/\W*/g, '')
statt. Dies ersetzt jede Folge von nicht-alphanumerischen Zeichen durch nichts./
und.
. Beachten Sie, dass die regex ist case-Sensitiv. Ich habe aktualisiert die Antwort mit copy ' N ' 'pasteable Beispiel.