A seguir, o IE é usado em vez do Internet Explorer e o MF é usado em vez do Mozzila Firefox
1. problema document.form.item
(1)Problemas existentes:
Existem muitas instruções como document.formName.item("itemName") no código existente, que não podem ser executadas no MF.
(2)Solução:
Use document.formName.elements["elementName"] em vez disso
(3) Outros
Consulte 2
2. Problemas com objetos de coleção
(1)Problemas existentes:
Muitos objetos de classe de coleção no código existente usam () ao acessá-los, o IE pode aceitar isso, mas o MF não.
(2)Solução:
Use [] para assinatura. Por exemplo: document.forms("formName") é alterado para document.forms["formName"].
Outro exemplo: document.getElementsByName("inputName")(1) é alterado para document.getElementsByName("inputName")[1]
(3) Outros
3. janela.evento
(1)Problemas existentes:
Não funciona no MF usando window.event
(2)Solução:
O evento de MF só pode ser utilizado no local onde ocorre o evento, e este problema ainda não pode ser resolvido. Pode ser alterado assim:
Código original (pode ser executado no IE):
<input type="button" name="someButton" value="Submit" onclick="javascript:gotoSubmit()"/>
...
<linguagem script="javascript">
função gotoSubmit() {
...
alerta(window.event); // usa window.event
...
}
</script>
Novo código (pode ser executado em IE e MF):
<input type="button" name="someButton" value="Submit" onclick="javascript:gotoSubmit(event)"/>
...
<linguagem script="javascript">
função gotoSubmit(evt) {
evt = evt ? evt : (window.event ? window.event : nulo);
...
alerta(evt); // usa evt
...
}
</script>
Além disso, se a primeira linha do novo código não mudar e for igual ao código antigo (ou seja, a chamada gotoSubmit não fornece parâmetros), ele ainda será executado apenas no IE, mas nenhum erro ocorrerá. Portanto, a parte tpl desta solução ainda é compatível com o código antigo.
4. O problema de usar o id do objeto HTML como nome do objeto
(1)Problemas existentes
No IE, o ID do objeto HTML pode ser usado diretamente como o nome da variável do objeto subordinado do documento. Não é possível em MF.
(2)Solução
Use getElementById("idName") em vez de idName como uma variável de objeto.
5. Problema ao obter objeto usando string idName
(1)Problemas existentes
No IE, você pode usar eval(idName) para obter o objeto HTML com o id idName, mas não no MF.
(2)Solução
Use getElementById(idName) em vez de eval(idName).
6. O problema de o nome da variável ser igual ao ID de um objeto HTML
(1)Problemas existentes
No MF, como o ID do objeto não é usado como o nome do objeto HTML, você pode usar o mesmo nome de variável que o ID do objeto HTML, mas não no IE.
(2)Solução
Ao declarar variáveis, sempre adicione var para evitar ambiguidades, para que possam rodar normalmente no IE.
Além disso, é melhor não usar o mesmo nome de variável que o ID do objeto HTML para reduzir erros.
(3) Outros
Consulte a pergunta 4
7. Problemas com Event.x e event.y
(1)Problemas existentes
No IE, o objeto de evento possui atributos x, y, mas não no MF.
(2)Solução
No MF, o equivalente a event.x é event.pageX. Mas event.pageX não está disponível no IE.
Portanto, event.clientX é usado em vez de event.x. Esta variável também existe no IE.
Existem diferenças sutis entre event.clientX e event.pageX (quando a página inteira tem barras de rolagem), mas elas são equivalentes na maioria das vezes.
Se você quiser que seja exatamente igual, você pode ter mais alguns problemas:
mX = evento.x?evento.x:evento.páginaX;
Então use mX em vez de event.x
(3) Outros
event.layerX existe no IE e no MF. Ainda não foi testado se o significado específico é diferente.
8. Sobre o quadro
(1)Problemas existentes
No IE, você pode usar window.testFrame para obter o quadro, mas não em mf.
(2)Solução
A principal diferença entre mf e ie no uso do frame é:
Se os seguintes atributos estiverem escritos na tag frame:
<frame src="xx.htm" id="frameId" name="frameName" />
Então, ie pode acessar o objeto de janela correspondente a este quadro através de id ou nome, enquanto mf só pode acessar o objeto de janela correspondente a este quadro através de nome. Por exemplo, se a tag de quadro acima estiver escrita no htm dentro da janela superior, então. pode ser acessado assim
ou seja: window.top.frameId ou window.top.frameName para acessar este objeto de janela
mf: Este objeto de janela só pode ser acessado através de window.top.frameName.
Além disso, window.top.document.getElementById("frameId") pode ser usado em mf e ie para acessar a tag frame e window.top.document. . getElementById("testFrame").src = 'xx.htm' para alternar o conteúdo do quadro, você também pode usar window.top.frameName.location = 'xx.htm' para alternar o conteúdo do quadro. descrição do quadro e da janela, consulte o artigo 'janela e quadro' do bbs e os testes no diretório /test/js/test_frame/
----adun 2004.12.09 Modificação
9. Em mf, os atributos definidos por você devem ser obtidos por getAttribute()
10. Não há parentElement parement.children em mf, mas use
parentNode parentNode.childNodes
O significado do subscrito de childNodes é diferente no IE e no MF. MF usa a especificação DOM e nós de texto em branco serão inseridos em childNodes.
Geralmente, esse problema pode ser evitado por meio de node.getElementsByTagName().
Quando um nó está faltando em html, o IE e o MF interpretam parentNode de maneira diferente, por exemplo
<formulário>
<tabela>
<entrada/>
</tabela>
</form>
O valor de input.parentNode em MF é forma, enquanto o valor de input.parentNode no IE é um nó vazio.
Não há método removeNode para nós em MF. Você deve usar o seguinte método node.parentNode.removeChild(node)
11. Problema .const
(1)Problemas existentes:
A palavra-chave const não pode ser usada no IE. Tal como const constVar = 32; Este é um erro de sintaxe no IE.
(2)Solução:
Não use const, use var.
12. objeto corporal
O corpo do MF existe antes que a tag body seja completamente lida pelo navegador, enquanto o IE deve existir depois que o corpo for completamente lido.
13. Codificação de url.
Em js, se você escrever um URL, basta escrever "não escreva". Por exemplo, var url = 'xx.jsp?objectName=xx&objectEvent=xxx';
frm.action = url, então é muito provável que a url não seja exibida normalmente e os parâmetros não sejam transmitidos corretamente ao servidor. Geralmente, o servidor reportará um erro informando que o parâmetro não foi encontrado. é se estiver em tpl, porque tpl está em conformidade com a especificação xml e o requisito & é escrito como &
Geralmente, MF não consegue reconhecer & em js.
14. Problema nodeName e tagName
(1)Problemas existentes:
No MF, todos os nós possuem valor nodeName, mas textNode não possui valor tagName. No IE, o uso de nodeName parece
Há um problema (não testei a situação específica, mas meu IE morreu várias vezes).
(2)Solução:
Use tagName, mas deve detectar se está vazio.
15. Atributos do elemento
O atributo input.type é somente leitura no IE, mas pode ser modificado no MF.
16. Problemas com document.getElementsByName() e document.all[nome]
(1)Problemas existentes:
No IE, getElementsByName() e document.all[name] não podem ser usados para obter elementos div (não se sabe se existem outros elementos que não podem ser obtidos).