1. Document.FormName.Item ("ItemName") Problema
Descrição do problema: no IE, você pode usar o document.formname.item ("itemName") ou document.formname.elements ["elementName"]; No Firefox, você pode usar apenas document.formName.elements ["ElementName"].
Solução: use Document.FormName.Elements ["ElementName"] de maneira unificada.
2. Problema de objeto de coleção
Descrição do problema: no IE, você pode usar () ou [] para obter o objeto da classe de coleta; No Firefox, você só pode usar [] para obter o objeto de classe de coleta.
Solução: use [] para obter objetos de classe de coleta de maneira unificada.
3. Questões de atributo personalizado
Descrição do problema: no IE, você pode usar o método de obter atributos regulares para obter atributos personalizados ou pode usar getAttribute () para obter atributos personalizados; No Firefox, você só pode usar getAttribute () para obter atributos personalizados.
Solução alternativa: obtenha uniformemente atributos personalizados através do getAttribute ().
4. Eval ("idname") problema
Descrição do problema: No IE, você pode usar o EVAL ("idname") ou getElementById ("idname") para obter objeto html com idname; No Firefox, você só pode usar o GetElementById ("IdName") para obter objeto HTML com IDName.
Solução: use getElementById ("idname") para obter o objeto HTML com ID como idName.
5. O problema do nome da variável e o ID de um certo objeto HTML
Descrição do problema: no IE, o ID do objeto HTML pode ser usado diretamente como o nome da variável do objeto subordinado do documento, mas não no Firefox; Sob o Firefox, o nome da variável que é o mesmo que o ID do objeto HTML pode ser usado, mas não no IE.
Solução alternativa: use document.getElementById ("idname") em vez de document.idname. É melhor não levar nomes de variáveis com o mesmo ID do objeto HTML para reduzir erros; Ao declarar variáveis, adicione a palavra -chave VAR para evitar a ambiguidade.
6. Edição const
Descrição do problema: No Firefox, você pode usar a palavra -chave const ou a palavra -chave VAR para definir constantes; No IE, você só pode usar a palavra -chave VAR para definir constantes.
Solução: use a palavra -chave var para definir constantes uniformemente.
7. o problema de atributo input.Type
Descrição do problema: a propriedade Input.Type sob o IE é somente leitura; Mas a propriedade Input.Type sob o Firefox é leitura.
Solução: não modifique a propriedade Input.Type. Se você precisar modificá -lo, primeiro oculte a entrada original e insira um novo elemento de entrada na mesma posição.
8. Window.Event Problem
Descrição do problema: Window.Event só pode ser executado no IE, não no Firefox, porque o evento Firefox só pode ser usado na cena em que o evento ocorre.
Solução: adicione parâmetros de evento à função onde o evento ocorre e use var myevent = evt?
Exemplo:
<input type = "button" onclick = "Dosomething (event)"/> <script linguage = "javascript"> function doSomething (evt) {var myEvent = evt?9. Event.x e Event.y Issues
Descrição do problema: no IE, o objeto uniforme possui atributos X e Y, mas não há atributos PageX e Pagey; Sob o Firefox, o objeto uniforme possui atributos PageX e Pagey, mas nenhum atributo X e Y.
Solução: var myx = event.x? event.x: event.pagex; var myy = event.y? Event.Y: Event.Pagey;
Se você considerar a 8ª edição, basta usar o MyEvent em vez do evento.
10. Event.Srcement Problem
Descrição do problema: no IE, o objeto uniforme possui uma propriedade SRCELEMENT, mas nenhuma propriedade de destino; Sob o Firefox, o objeto uniforme possui uma propriedade de destino, mas nenhuma propriedade SRCELEMENT.
Solução: use srcobj = event.srcelement? Event.srcelement: event.target;
Se você considerar a 8ª edição, basta usar o MyEvent em vez do evento.
11. Window.Location.Href Problem
Descrição do problema: No IE ou Firefox2.0.x, você pode usar o Window.Location ou Window.Location.href; No Firefox1.5.x, você só pode usar o Window.Location.
Solução alternativa: use window.location em vez de window.location.href. Obviamente, você também pode considerar usar o método Location.Replace ().
12. Problemas de janela modal e não modal
Descrição do problema: no IE, janelas modais e não modais podem ser abertas através do ShowModaldialog e ShowModlessDialog; Sob o Firefox, não pode.
Solução: use window.open (pageurl, nome, parâmetros) para abrir uma nova janela.
Se você precisar passar os parâmetros na janela da criança de volta para a janela dos pais, poderá usar a janela.Perpener na janela da criança para acessar a janela do pai. Se a janela dos pais precisar controlar a janela filho, use var subwindow = window.open (pageurl, nome, parâmetros); Para obter o objeto de janela recém -aberto.
Treze, problemas de quadro e iframe
O quadro a seguir é um exemplo:
(1) Objeto da estrutura de acesso
IE: use window.frameId ou window.frameName para acessar esse objeto de quadro;
Firefox: use window.frameName para acessar esse objeto de quadro;
Solução: use window.document.getElementById ("frameId") para acessar esse objeto de quadro;
(2) Conteúdo do quadro da mudança
No IE e no Firefox, você pode usar window.document.getElementById ("frameId"). Src = "webjx.com.html" ou window.framename.Location = "webjx.com.html" para alternar o conteúdo do quadro;
Se você precisar passar os parâmetros no quadro de volta para a janela pai, poderá usar a palavra -chave pai no quadro para acessar a janela do pai.
14. Problema de carregamento corporal
Descrição do problema: existe o objeto corporal do Firefox antes que a etiqueta corporal seja totalmente lida pelo navegador; Enquanto o objeto corporal do IE deve existir depois que a etiqueta corporal é totalmente lida pelo navegador.
[Nota] Este problema ainda não foi verificado e será modificado após a verificação.
[Nota] Foi provado que os problemas acima não existem no IE6, Opera9 e Firefox2. Um script JS simples pode acessar todos os objetos e elementos que foram carregados antes do script, mesmo que esse elemento ainda não tenha sido carregado.
15. Método de delegação de eventos
Descrição do problema: no IE, use document.body.onload = injeção; onde a função inject () foi implementada antes disso; No Firefox, use document.body.onload = inject ();
Solução: use document.body.onload = new function ('inject ()'); ou document.body.onload = function () {/* Aqui está o código*/}
[Nota] A diferença entre função e função
16. A diferença entre o elemento pai acessado
Descrição do problema: no IE, use obj.parenteLement ou obj.parentNode para acessar o nó dos pais da Obj; Sob o Firefox, use obj.parentnode para acessar o nó dos pais da OBJ.
Solução: como o Firefox e o IE suportam o DOM, obj.parentNode é usado para acessar o nó pai da OBJ.
17. O problema do InnerText.
Descrição do problema: O InnerText funciona corretamente no IE, mas o InnerText não funciona no Firefox.
Solução alternativa: use o TextContent em vez do InnerText em navegadores que não são de AI.
Exemplo:
if (navegator.appname.indexof ("explorer")> -1) {document.getElementById ('elemento'). innerText = "meu texto"; } else {document.getElementById ('elemento'). textContent = "; meu texto"; }[Nota] O InnerHTML é suportado por navegadores como IE e Firefox. Outros, como o OuterHtml, são suportados apenas pelo IE, por isso é melhor não usá -lo.
18. Problemas de operação da tabela
Descrição do problema: IE, Firefox e outros navegadores têm operações diferentes nas tags de tabela. No IE, não tem permissão para atribuir valores innerhtml à tabela e tr. Ao usar o JS, o uso do método AppendChild não funciona. Document.AppendChild suporta o Firefox ao inserir linhas nas tabelas, mas o IE não as suporta.
Solução: Insira linhas no Tody, não as insira diretamente nas tabelas
Solução:
// Adicione uma linha em branco à tabela: var row = Otable.insertrow (-1); var celular = document.createElement ("td"); Cell.innerhtml = ""; Cell.className = "xxxx"; row.appendChild (célula);[Nota] Recomenda -se usar conjuntos de estruturas JS para operar tabelas, como o jQuery.
• Obtenha o número de linhas e colunas da tabela
No IE, você pode usar o código a seguir para obter o número de linhas e colunas:
var detalhet = grid.gettable ("11"); // obtenha o comprimento da linha var r = detalhet.rows.length; // obtenha o comprimento da coluna var L = detalhet.cells.length;E obter a duração da coluna no Firefox ou no Google é inválida.
Solução:
var detalhet = grid.gettable ("11"); // obtenha o comprimento da linha var r = detalhet.rows.length; // Obtenha o comprimento da coluna var L = detalhet.Rows [0] .Cells.Length;19. Problema de largura e altura do objeto
Descrição do problema: A declaração semelhante ao obj.style.Height = imgobj.Height in Firefox é inválida.
Solução: use obj.style.Height = imgobj.Height + 'px' em uniforme;
20. SetAttribute ('Style', 'Color: Red;')
O Firefox suporta (exceto o IE, todos os navegadores agora suportam), ou seja, não o suporta
Solução: não se setattribute ('estilo', 'cor: vermelho')
Use object.style.csStext = 'Color: Red;' (há exceções a este escrito)
A melhor maneira é usar todos os métodos acima e será infalível.
21. Configuração de nome de classe
SetAttribute ('classe', 'StyleClass')
O Firefox suporta, mas o IE não suporta (especifique o nome do atributo é a classe, ou seja, não definirá o atributo de classe do elemento. Pelo contrário, ou seja, reconhecerá automaticamente o atributo ClassName quando o SetAttribute for usado)
Solução:
setAttribute ('classe', 'styleClass') setAttribute ('className', 'styleClass') ou object.className = 'styleClass';Tanto o IE quanto o FF suportam Object.ClassName.
22. Defina eventos com setattribute
var obj = document.getElementById ('objid');
obj.setAtattribute ('OnClick', 'funcitonName ();');
Firefox suporta, mas o IE não suporta
Solução:
No IE, a notação do DOT deve ser usada para se referir ao manipulador de eventos necessário e as funções anônimas devem ser atribuídas a ele.
do seguinte modo:
var obj = document.getElementById ('objid'); obj.OnClick = function () {FucntionName ();};Este método é suportado por todos os navegadores
23. Crie um botão de rádio
Navegadores além do IE
var rdo = document.createElement ('input'); rdo.setAtattribute ('tipo', 'rádio'); rdo.setAtattribute ('nome', 'radiobtn'); rdo.setAtAttribute ('value', 'verificado');Ou seja:
var rdo = document.createElement ("<nome de entrada =" radiobtn "type =" radio "value =" checked " />");Solução:
Essa diferença é diferente da anterior. Desta vez, é completamente diferente, então não há uma maneira comum de resolvê-lo, então apenas se-else
Felizmente, o IE pode reconhecer o atributo exclusivo do documento, que outros navegadores não podem reconhecer. Problema resolvido.
A solução rápida para os 23 problemas de compatibilidade com vários navegadores no JavaScript é o conteúdo completo que compartilho com você. Espero que você possa lhe dar uma referência e espero que você possa apoiar mais o wulin.com.