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));
Respostas:
Esta é uma postagem antiga, mas talvez ainda seja útil para alguém.
Eu tive a mesma mensagem de erro. No final, o problema era um nome inválido para o segundo argumento, ou seja, eu tinha uma linha como:
O problema era 'um título de janela', pois não é válido. Funcionou bem com a seguinte linha:
Na verdade, lendo cuidadosamente, percebi que a Microsoft não apóia um
name
segundo argumento. Quando você olha a página de documentação oficial , vê que a Microsoft permite apenas os seguintes argumentos, se for usar esse argumento:fonte
O IE é exigente quanto ao argumento do nome da janela. Não gosta de espaços, travessões ou outros sinais de pontuação.
fonte
Quando você chama
window.open
no IE, o segundo argumento (nome da janela) deve ser uma das strings de destino predefinidas ou uma string, que tem a forma de um identificador válido em JavaScript.Então, o que funciona no Firefox: "Job Directory 9463460", não funciona no Internet Exploder e deve ser substituído por: "Job_Directory_9463460" por exemplo (sem espaços, sem sinais de menos, sem pontos, deve ser um identificador válido) .
fonte
o problema pode ser o wname, tente usar um dos mostrados no link acima, cito:
se estiver usando outro wname, window.open não será executado ...
fonte
Na verdade, um nome pode ser usado, mas não pode ter espaços, portanto, não
window.open("../myPage","MyWindows",...)
deve funcionar sem problemas ( window.open ).fonte
Eu também enfrento esse problema ao usar o seguinte código:
mas quando eu excluo o espaço em branco do "Título da janela", o código abaixo está funcionando:
fonte
Olá, usando o seguinte código está funcionando ...
Anteriormente, eu entrei como
Significa que a Microsoft não permite que você insira o nome da janela, ela deve estar em branco na
window.open
função ...Obrigado, Nilesh Pangul
fonte
Para mim, o problema era com um traço "-" no campo do nome da janela. Tirei os travessões e o IE não dá erro e de fato abre a janela.
fonte
O que representa a posição quatro, aquela que tem 'falso' como valor? Isso não deveria ser falso (ou seja, sem aspas?). É possível que as versões anteriores do IE tornassem a string booleana, mas as mais recentes não.
fonte
As respostas aqui estão corretas porque o IE não suporta espaços ao definir o título em window.open (), nenhum parece oferecer uma solução alternativa.
Removi o título da minha chamada window.open (você pode usar null ou '') e, em seguida, adicionei o seguinte à página que estava sendo aberta:
Não é ideal de forma alguma, mas isso permitirá que você defina o título como quiser em todos os navegadores.
fonte
Tente remover o último argumento. Fora isso, certifique-se de que urlstring, wname e wfeatures existem.
fonte
Eu descobri o mesmo problema e depois de ler a primeira resposta que supõe que o problema é causado pelo nome da janela, mudei-o: primeiro para '_blank', que funcionou bem (compatibilidade e visualização normal), depois para o valor anterior, apenas menos o espaço no valor :) - também funcionou. IMO, o problema (ou parte dele) é causado pela incapacidade do IE de usar um valor de string normal como wname. Espero que isso ajude se alguém tiver o mesmo problema.
fonte
Se você quiser usar o nome da nova janela etc postando um formulário nesta janela, a solução, que funciona no IE, FF, Chrome:
fonte
Parece que mesmo usando um nome de janela personalizado "válido" (não _blank, etc.) usando window.open para abrir uma nova janela, ainda há problemas. Funciona bem na primeira vez que você clica no link, mas se você clicar nele novamente (com a primeira janela aberta ainda aberta), você receberá uma depuração de script "Erro: interface não compatível".
fonte