2011-01-30 10 views
13

No sé lo suficiente acerca de javascript para averiguar por qué la línea en 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.window.open arroja argumento no válido en IE7-8-9b

(La secuencia de comandos se envÃa con un onclick="share.fb()" en un enlace html y aparece una nueva ventana del navegador 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"); 
    } 
    }; 
+0

¿Usted intentó cambiar el '' this.share' a share.share' en los '' fb' y tw' funciones? – sdleihssirhc

Respuesta

33

IE no permite espacios y otros caracteres especiales en el nombre de la ventana (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, '') 

modo que usted termina con

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

(que es básicamente un reemplazo de expresiones regulares que dice "Cambiar cada secuencia de la no aplhabetic personaje por nada ")

Demostración en directo here (si es necesario configurar su bloqueador de popups)

+0

¿Cómo eliminaría los espacios? No escribí el JS, lo encontré. – markratledge

+0

Ver la respuesta de actualización. – BalusC

+0

Gracias, pero sigue siendo un error de argumento no válido. Hay un espacio entre las dos comillas simples? – markratledge

Cuestiones relacionadas