을 추가하려면 어떻게 해야 합니까 pre 태그 내 코드는 태그 jQuery?
-
08-06-2019 - |
문제
하려고 해요 사용 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;에서 동작하는 경우가 지정하지 않기 때문에,그것은 오류가 발생하지 않습니다.
- 수신 대체 이
code
소pre
?(기 때문에 블록의/인라인 문제로 기술적으로해야 하는 경우에만 작동 요소는 내부 는 요소는"유량"컨텐츠, 하지만,브라우저에서 당신이 원하는 것입니다.) - 왜
code
소에서 첫 번째 위치하려는 경우pre
의 동작? - 수도 있습 제공
code
소pre
's 의 공백을 보존하는 전력과 CSSwhite-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.하지만 이 솔루션을 사용할 수 있습니다.