> 웹 프론트엔드 > JS 튜토리얼 > 해당 객체가 window_javascript 스킬의 js 코드인지 확인

해당 객체가 window_javascript 스킬의 js 코드인지 확인

WBOY
풀어 주다: 2016-05-16 18:34:14
원래의
1204명이 탐색했습니다.

[모두 선택하려면 Ctrl A 참고: 외부 J를 도입해야 하는 경우 실행하려면 새로 고쳐야 합니다.
]

결과는 다양합니다.
[개체 개체]IE6
[개체 개체]IE8
[개체 창]firefox3.6
[개체 창]opera10
[object DOMWindow]safai4.04
[object global]chrome5.0.3.22
Heheming이 어떻게 결정하는지 살펴보고 setInterval이라는 속성이 있는지 확인하세요. 너무 엄격해 보이지는 않지만 이보다 더 엄격할 수는 없습니다. IE에서는 일반화된 함수가 함수인지 여부를 판단하는 것이 불가능하기 때문입니다. Object.prototype.toString.call은 항상 [object Object]를 인쇄합니다. 이름 속성이 없습니다. 복사하기가 너무 쉽기 때문에 폐기되었습니다.
절망적으로 속성을 하나씩 확인하여 특별한 속성이 있는지 확인해보세요. 마침내 무한 루프에서 자신을 참조하는 동일한 이름의 창 속성이 있다는 것을 발견했습니다. 이는 IE에서는 여전히 문제입니다.

[모두 선택하려면 Ctrl A 참고:
외부 J를 도입해야 하는 경우 새로 고쳐야 합니다. 실행
]
IE에서는 false가 뜰 것이고, 다른 브라우저에서는 true가 뜰 것입니다. 단, 모든 브라우저는 다음과 같이 통일됩니다.
[Ctrl A 모두 선택 참고: 필요한 경우
외부 Js 실행하려면 새로고침해야 합니다
]


[Ctrl A 모두 선택 참고:
외부 J를 도입해야 하는 경우, 코드를 복사하세요.




var isWindow = function(obj){
return obj.window === obj.window.window
}
= ========== ===========화려한 구분선=======================감사합니다 영감을 얻기 위해 아이보니에게!
코드 복사


코드는 다음과 같습니다.


function isWindow( obj ){
if(typeof obj !== "object") return false;//객체여야 함
var Expando = "dom" (new Date-0) //임의 변수 이름 생성
//전역 구문 분석 코드 , IE eval은 원래 범위에만 유효합니다
//자세한 내용은 http://www.javaeye.com/topic/519098을 참조하세요
//또한 HTML5 엄격 모드에서는 eval과 with가 금지되므로 그것들을 버려라!
var js = document.createElement("script");
var head = document.getElementsByTagName("head")[0];
head.insertBefore(js,head.firstChild)
js.text = Expando " = {};"
head.removeChild(js)
return window[expando] === obj[expando] <script>alert(Object.prototype.toString.call(window))</script>} <script>alert(window === window.window)</script>isWindow(window) <script>alert(window == window.window)</script><script>alert(window.window === window.window.window)</script>
관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿