문제

하려고 해요 사용 jQuery 하는 형식의 코드 블록 특별히 추가 <pre> 태그 내부의 <code> 태그:

$(document).ready(function() {
   $("code").wrapInner("<pre></pre>");
});

파이어 폭스에 적용되는 형식을 올바르게 하지만,IE 을 둔 전체 코드 블록에서 하나의 라인입니다.를 추가하는 경우 경고

alert($("code").html());

는 IE 삽입되어 있는 몇 가지 추가 텍스트를 pre 태그:

<PRE jQuery1218834632572="null">

면 페이지를 다시 로드 수,다음 jQuery 변경합니다.

내가 사용하는 경우 wrap()wrapInner(), 로,랩 <pre> 외부 <code> 태그는 모두,IE,Firefox 처리합니다.지 않았 <pre> <code> 뿐만 아니라?

내가 사용하는 것을 선호하 wrapInner() 할 수 있기 때문에 다음을 추가 CSS 클래스 <pre> 태그를 처리하는 모든 서식지를 사용하는 경우 wrap(), 를 넣어 페이지에 서식 CSS 에 <pre> 태그와 문자/글꼴 서식 <code> 태그,또는 Firefox/IE 모두 choke.지,거래 하지만 나는 그것을 유지하는 가능한 한 간단합니다.

다른 사람이 발생하는 이?나는 뭔가?

도움이 되었습니까?

해결책

는 사이의 차이점 블록고 인라인 요소입니다. pre 은 블럭 레벨 요소.그것은 법적을 넣어 code 태그 만 포함할 수 있는 인라인 콘텐츠.

기 때문에 브라우저가 지원해야 어떤 godawful 태그 스프 찾을 수 있습니다 그들은 실제 웹,파이어 폭스를 수행하려고 당신이 무엇을 의미합니다.IE 발생하는 핸들은 그것을 다르게 정밀 spec;에서 동작하는 경우가 지정하지 않기 때문에,그것은 오류가 발생하지 않습니다.

  • 수신 대체codepre?(기 때문에 블록의/인라인 문제로 기술적으로해야 하는 경우에만 작동 요소는 내부 는 요소는"유량"컨텐츠, 하지만,브라우저에서 당신이 원하는 것입니다.)
  • code 소에서 첫 번째 위치하려는 경우 pre의 동작?
  • 수도 있습 제공 codepre's 의 공백을 보존하는 전력과 CSS white-space: pre, 지만,분명히 IE6 만 명예는 엄격 모드에서.

다른 팁

Btw I 알지 못하는 경우 그것은 관련이지만 pre 태그 내 코드는 태그는지 확인에 엄격한 모드입니다.

당신은 당신을 사용하여 최신 jQuery?무엇을 하려는 경우

$("code").wrapInner(document.createElement("pre"));

그것은 어떤 나나 당신과 같은 결과를 얻?

로 markpasc 시 사전에 요소가 내부에 코드는 요소에서는 허용되지 않습니다.최고의 솔루션을 변경하는 HTML 사용하는 코드 <pre><code> (을 의미하는 미리 포맷을 차단하는 코드를 포함)직접에서 당신의 HTML 코드 블록입니다.

당신이 사용할 수 있습 html()그것을 마무리:

$('code').each(function(i,e)
{
    var self = $(e);
    self.html('<pre>' + self.html() + '</pre>');
});

위에서 언급한 바와 같이,당신이 더 나을 것을 변경하 html.하지만 이 솔루션을 사용할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top