Ticket #444 (closed defeito: fixed)

Opened 12 years ago

Last modified 11 years ago

A quebra de indentação ao responde e-mail não funciona no Internet Explorer.

Reported by: rodsouza Owned by: rodsouza
Priority: pequena Milestone: Expresso 2.2
Component: ExpressoMail Version: trunk
Severity: média Keywords: indentação
Cc: WorkGroup:

Description

A quebra de indentação ao responde e-mail não funciona no Internet Explorer.

A indentação utiliza "execCommand" do javascript com o parâmetro "outdent" e é nesse momento que ocorre o erro possivelmente.

A solução para esse problema possivelmente será a mesma a ser aplicada ao ticket #245.

Change History

comment:1 Changed 12 years ago by rodsouza

O não funcionamento se deve ao fato que a rotina adotada (ver abaixo) para realizar o procedimento não tem uma resposta adequada no Internet Explorer.

this.execCommand('insertOrderedList', false, ); this.execCommand('outdent', false, );

Outra situação, a referência "this" provoca um erro no IE, isso ocorre devido ao que se segue: (para a referência completa vide  https://developer.mozilla.org/en/Rich-Text_Editing_in_Mozilla#Internet_Explorer_Differences)

Another difference between Mozilla and IE is how to access the document object of an iframe, which is usually used in conjunction with designMode. Mozilla uses the W3C standard way, namely IFrameElement.contentDocument, while IE requires IFrameElement.document.

Se trocar a referência "this" para "body.contentWindow.document" o erro não ocorre entretanto devido a resposta inadequada não é aconselhável realizar tal substituição até que se tenha conhecimento de como realizar a quebra de indentação no IE.

comment:2 Changed 12 years ago by rodsouza

  • Type changed from defeito to melhoria

A rotina inserida para realizar a indentação não realizava o procedimento de forma satisfatória nem mesmo no Firefox.

Devido a esse fato foi alterada. Todavia ainda não foi identificado um procedimento que realize a indentação no Internet Explorer.

O código abaixo é o que teve melhores resultados:

        var oSel = body.contentWindow.document.selection.createRange(); 
        oSel.pasteHTML("<p />"); 
        oSel.select(); 
        oSel.moveEnd("character",1); 
        oSel.moveStart("character",1); 
        oSel.collapse(false);
        body.contentWindow.document.execCommand( 'outdent', false, '' );

OBS: Committed revision 2505. (Repositório interno Celepar)

comment:3 Changed 12 years ago by rodsouza

A ocorrência #245 é afetada pelo mesmo problema, ou seja, a substituição de parágrafos por quebras de linha no IE.

comment:4 Changed 12 years ago by niltonneto

  • Owner changed from alguem to rodsouza
  • Version changed from 1.0 to Trunk

A provável solução está no tratamento da tag <p> criada a partir da tecla enter, alterando seu estilo (inserindo margem zero).
Ex. <p style="margin:0px">
Está sendo estudada pela equipe CELEPAR. Dessa forma, todos os problemas relatados aqui e no ticket #245, devido à substituição do <p> por <BR>, no IE, será solucionado de uma vez.

comment:5 Changed 12 years ago by niltonneto

  • Type changed from melhoria to defeito

comment:6 Changed 11 years ago by wmerlotto

  • Milestone set to Expresso 2.2

comment:7 Changed 11 years ago by rodsouza

  • Status changed from new to closed
  • Resolution set to fixed
  • Severity set to média

O outline atua sobre parágrafos, se não houver parágrafos então não é possível executar o navegador não consegue executar o comando corretamente.

Para e-mails que estão corretamente formatados com parágrafos o comando funciona corretamente.

Assim o presente ticket está sendo finalizado.

Note: See TracTickets for help on using tickets.