Tenho um site que apresenta um problema apenas com o IE8:
O código é:
var w = window.open(urlstring, wname, wfeatures, 'false');
O erro é:
Mensagem: argumento inválido.
Linha: 419 Char: 5
Código: 0
URI: http: //HOSTNAME/js_context.js
Confirmei o número da linha do código (a "Linha" e o "URI" estão corretos) e sei que em versões posteriores do IE8 isso é considerado preciso.
Eu verifiquei todos os parâmetros de entrada na chamada, despejando alertas e todos parecem válidos.
Este problema não acontece no FF (provavelmente 3).
ATUALIZAR:
O problema parece estar em usar a atribuição do resultado de window.open () ao fazer "var w". Quando divido a linha em duas instruções, ela funciona no IE8.
ATUALIZAÇÃO2:
Baseado em:
http://javascript.crockford.com/code.html
Quando uma função deve ser chamada imediatamente, toda a expressão de chamada deve ser agrupada entre parênteses para que fique claro que o valor que está sendo produzido é o resultado da função e não a própria função.
Não é exatamente o que está acontecendo aqui, mas descobri que a aplicação do princípio resolveu o problema, no modo de compatibilidade do IE8.
var w = (window.open(urlstring, wname, wfeatures, false));