2011-02-10 6 views
2

Firefox 3.6 (Firebug 콘솔)에서

$('<div style="-x-foo:bar;color:red;" />').attr("style")

의 결과

"color: red;"

왜 인식되지 않는 스타일 규칙이 손실 되었습니까?

답변

2

인식 할 수없는 규칙으로 브라우저에서 수행해야 할 작업에 대해 정의 된 동작이 없습니다. 일부 브라우저는 DOM에 추가하지만 무시할 수도 있고 완전히 무시할 수도 있습니다.

Firefox는 알 수없는 규칙을 삭제하는 기능 중 하나입니다.

다른 브라우저에서는 다른 결과가 발생할 수 있습니다. 요점은 그것이 정의되지 않았기 때문에 동일한 브라우저의 버전 사이에서도 무슨 일이 일어날 지 예측하기가 어렵다는 것입니다.

실제 질문은 다음과 같습니다. 알 수없는 규칙은 무엇입니까? 당신은 명확하게 여기에 어떤 종류의 영리한 트릭을하려고 노력하고 있습니다. 질문에 주어진 답변이 당신의 영리한 트릭이 작동하기 위해 찾고 있던 대답 일지는 의심 스럽습니다. 아마도 당신이이 인식 할 수없는 규칙으로 성취하려는 것을 설명했다면, 현재의 계획이 펼쳐지지 않을 것 같아서, 성취 할 수있는 방법을 찾도록 도와 줄 수 있습니다.

+0

+1 - 좋은 대답. – Skilldrick

+0

Firefox 4는 알 수없는 스타일을 즉시 삭제하지 않지만 CSSOM을 통해 스타일을 수정하면됩니다. – Neil

4

jQuery는 새 DOM 요소를 만듭니다. Firefox는 해당 요소의 style 특성을 구문 분석하고 이해하지 못하는 요소는 무시합니다.

Chrome이 이와 같은 속성을 제거하지 않는다는 점은 주목할 가치가 있습니다.

다른 브라우저에서이 동작을 테스트하려면 this link을 시도하십시오 - 감사합니다. ILMV!

+0

나에게 의미가 있으며, Chrome (jsFiddle)에서 시도해보십시오. http://jsfiddle.net/Ilmv/He7Ta/ –

+0

@ILMV jsfiddle이 내게 현재로드되지 않습니다. 그게 똑같은 일이라고 말하는거야? Ctrl-Shift-j를 눌러 위의 행을 실행하면 Chrome에'-x-foo' 속성이 포함됩니다. – Skilldrick

+0

@ILMV 제 브라우저 (Chrome 9)에서'-x-foo'는 당신의 바이올린으로 알려줍니다. – Skilldrick

0

브라우저는 노드를 만들 때 인식하지 못하는 속성을 버리고 속성 값을 설정합니다.

브라우저에서 메모리에 저장 한 내용을 직렬화하면 더 이상 존재하지 않습니다.

관련 문제