2015-01-22 7 views
-1

변수 var doc에 할당 된 HTML 문서 객체가 있습니다. 이 문서 개체를 사용하여 문자열 값을 렌더링 및 쓰기 있지만 IE11 브라우저에서 부적절한 형식으로 텍스트 파일을 렌더링 오전 IE8, IE10, ff n chrome.Flease 내 아래 코드를 찾을 :document.write()에 대한 크로스 브라우저 지원

function savecontent(str){ 
    var filename = "data.txt"; 
    var str=replaceAll(str,'<doublequote>','"'); 
    var w = window.frames.w; 
    if(!w) 
    { 
      w = document.createElement('iframe'); 
      w.id = 'w'; 
      w.style.display = 'none'; 
      document.body.insertBefore(w,null); 
      w = window.frames.w; 
      if(!w) 
      { 
        w = window.open('', '_temp', 'width=100,height=100'); 
        if(!w) 
        { 
          window.alert('Sorry, could not create file.'); return false; 
        } 
      } 
    } 

    var doc = w.document; 
    doc.open('text/plain'); 
    doc.charset="iso-8859-1"; 
    doc.write(str); 
    doc.close(doc.write(str)); 
    w.close(); 
    if(doc.execCommand('SaveAs', false, filename)) 
    { 
      window.alert("Please save the file."); 
    } 
} 

예상대로 내 캐릭터 라인은 ..로 IE11에서 렌더링

,

employee_firstname,employee_lastname, 
employee_id,employee_salary,employee accountno,employee_dob 

하지만 어디 employee_firstname, employee_lastname, employee_id입니다, employee_salary, 직원 accountno, employee_dob 등과 같이 할 수있는 곳 ED이고 데이터 IE8 렌더링되는, FF N 아래 형식 크롬 :

employee_firstname,employee_lastname,employee_id, 
employee_salary,employee accountno,employee_dob 

난 IE8, FF N 크롬 등의 다른 브라우저 예고 상이한 다른 브라우저에 비해 IE11에서 다르게 일어나는 개행 이다. 누구나 IE11 브라우저의 텍스트 파일이나 document.write()의 다른 형식으로 데이터 렌더링을 올바르게 형식화하는 방법을 알려주시겠습니까?

+0

1) 전체 코드를 표시하는 문제를 재현합니다. 2) 차이점이 무엇인지 설명하십시오. 줄 바꿈의 위치 인 것처럼 보입니다.이게 진짜입니까? 3) 코드 조각은 여러 가지 이유로 작동하지 않습니다. 예를 들어'window'를 지역 변수로 사용하고'charset'을 설정하려고하는 것입니다. –

+0

질문 수정 – kss

+0

언급 한 문제 중 하나를 피하면서 코드를 수정했지만 여전히 기능 만합니다. 함수 호출도없고 HTML도 없습니다. –

답변

1

문제는 제공된 코드에서 재구성 할 수 없지만 Document 개체에 open() 메서드를 사용하여 인라인 프레임에 표시 할 새 문서를 생성하고있는 것으로 보입니다. 이것은 비교적 잘 지원되지만 작성된 문서가 일반 텍스트 문서가 아닌 HTML 문서 인 경우에만 지원됩니다.

text/plain 형식을 사용하려고하면 브라우저가 사물을 다르게 처리합니다. 그들은 실제로 HTML 문서를 만들고, 작성중인 문서의 DOM 트리에 배치합니다. 여기에는 사용자가 작성한 텍스트 만 있거나 pre 엘리먼트 래퍼가있는 body 부분이 포함되어있어 그 부분이 그대로 표시됩니다. 예를 들어 IE의 이전 버전은 pre 요소를 생성하지만 IE 11은 그렇지 않습니다. IE 11은 옳은 일을한다고 주장 할 수 있습니다. 평범한 텍스트 란 라인을 나누는 것과 관련하여 텍스트를 그대로 렌더링해야한다는 것을 의미하지는 않습니다. 어쨌든

은이를 방지 할 수있는 방법은, 당신이있는 그대로의 텍스트를 표시 할 것을 제공하는 HTML 문서를 생성하고 코드로 pre 래퍼를 삽입하는 것입니다

doc.open('text/html'); 
doc.write('<pre>' + str + '</pre>'); 
+0

이것은 저에게 적합합니다. 감사 – kss