2012-12-18 4 views
0

이 임의의 js 코드를 실행하기위한 유일한 요구 사항은 특정 전역 변수/함수 (예 : setInterval)가 노출되지 않는다는 것입니다.사용자 지정 전역 컨텍스트에서 임의의 javascript 실행

현재 전략에는 js 코드를 파싱하고 모든 글로벌 참조에 대해 var 선언 (둘러싸는 클로저의 시작 부분에 있음)이 포함됩니다.

다른 해결 방법이 있는지 궁금합니다.

또한이 임의 코드는 eval과 같이 실행되지 않습니다. 오히려 클로저 내부를 감싸고 기본 코드에 추가됩니다.

+0

JS가 할 수없는 작은 유한 목록을 가지고 있다면 아이디어 중 하나는 window.alert = myalert와 같은 값으로 함수와 변수를 재정의하는 것입니다. 이것은 분명히 그것들을 세계적으로 사용할 수 없게 만든다. 단지 당신의 목적에 맞는 경우를 대비해서. – closure

+0

클로저에 코드를 래핑 할 수 있습니다 (클로저는 함수 일뿐입니다). 그런 다음 모든 전역 선언은 클로저에 대해 로컬이됩니다. –

+0

@raghavv 그래, 그게 더 나은 접근 방법이고, 내가해야 할 일이야. 나는이 명백하지만 중요한 점을 놓쳤다는 것을 믿을 수 없다. 대답을 남겨 주시면 받아 들일 것입니다. 감사! – Dave

답변

1

옵션 중 하나는 사용자 고유의 함수 나 변수를 제공하여 전역 변수를 재정의하는 것입니다. 예 :

는 Window.alert = 함수() {
은 // 코드가 여기에 표시됩니다
//
필요에 따라 선택적으로는 Window.alert 전화}

당신이 경우는 관리해야한다 당신이 숨기고 싶은 것들의 작은 유한 목록이 있습니다. 이렇게하면 전역 적으로 사용할 수 없게됩니다.

관련 문제