eval이 function_javascript 기술을 발견할 때 IE 처리

WBOY
풀어 주다: 2016-05-16 18:03:29
원래의
1236명이 탐색했습니다.

사례 1: eval에 함수가 없으므로 직접 실행:
eval("alert('ss');");//모든 브라우저가 올바르게 출력합니다.
사례 2: eval에 함수가 있고, 함수가 즉시 실행됩니다:
eval("(function(){alert('ss');})();");//모든 브라우저가 올바르게 출력됩니다.
사례 3: eval에 함수가 있습니다. , 변수를 사용하여 함수 참조를 저장하고 다음 함수를 호출합니다.
var f=eval("(function(){alert('ss');})")
f();//Error IE에서 보고됨: 개체 누락, 다른 브라우저는 정상입니다
eval에서 함수를 정의하고 이를 변수로 반환하면 IE에서 개체 누락이라는 오류를 보고합니다. IE에서는 eval에 정의된 함수가 eval 외부로 성공적으로 반환되지 않는 것을 볼 수 있습니다.

해결 방법: 함수 개체를 실행 결과로 반환:

방법 1:

var f=eval("(function(){ return function(){alert ( 'ss');}})()");
f();//모든 브라우저는 즉시 실행되는 함수를 호출하기 위해
eval을 올바르게 출력합니다. 함수가 실행된 후 함수 객체를 반환합니다. . 함수 객체의 참조가 외부 변수에 성공적으로 반환된 경우입니다.

방법 2:

var f=eval("(false||function(){alert('ss');})")
f();// 모든 브라우저에서
을 성공적으로 출력했습니다. 이 메서드는 jquery에서도 사용됩니다. 이 함수는 or 표현식의 실행 결과로 반환되므로 문제를 성공적으로 해결할 수도 있습니다. 물론, 표현식은 위의 false||function(){}에만 국한되지 않습니다. 다양한 표현식이 성공적으로 함수를 반환할 수 있는 한 문제를 해결할 수 있습니다:

/* 및 표현식: */
var f=eval("(true&&function(){alert('ss');})");
f();//모든 브라우저는 정상적으로 출력됩니다

/* 삼항 표현식 :*/
var f=eval("(true?function(){alert('ss');}:'');")
f();//모든 브라우저가 정상적으로 출력됩니다.

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!