window.open arroja argumento no válido en IE7-8-9b

No sé lo suficiente sobre javascript para descubrir por qué la línea de este script que comienza con "window.open …" arroja un error de argumento no válido en IE7-8-9b. Funciona bien en Firefox y Webkit.

(El script se envuelve con un onclick="share.fb()" en un enlace html y aparece una nueva window del browser para compartir en FB y 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"); } }; 

One Solution collect form web for “window.open arroja argumento no válido en IE7-8-9b”

IE no permite espacios ni otros caracteres especiales en el nombre de la window (el segundo argumento). Debe eliminarlos antes de pasar como argumento.

Reemplazar

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

por

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

para que termines con

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

(Eso es básicamente un reemploop de expresiones regulares que dice "reemplaza cada secuencia de carácter no aplético por nada")

Demostración en vivo aquí (configure si es necesario su bloqueador de pop-ups)

  • comunicación lateral en polymer
  • en javascript, ¿cómo se determina el evento actual si no se pasa como arg?
  • Adjuntar events de keyboard a un elemento SVG dentro de HTML
  • Busque la coma en el textbox usando jQuery
  • Añadir el detector de events a todos los objects, excepto unos pocos seleccionados?
  • ¿Cómo puedo escuchar clics triples en JavaScript?
  • Cómo funciona Eventbug en realidad
  • ¿Cómo se implementan los events de difusión personalizados en JavaScript (o jQuery)?
  • Javascript tiene muchos buenos JS marco (como Node.js AngularJS Vue.js React.js) es el mejor lenguaje de script.