2012-12-14 2 views
0

내 HTML 코드에서 외부 js 파일을 가져 왔고 또한 자체 인라인 js 코드가 있고 내 js 코드에서 개체 메서드를 호출해야합니다 외부 js 파일에 정의되어 있습니다. 렌더링 후, 소스 코드는 다음과 같습니다다른 스크립트 태그에서 클래스 메서드를 호출하는 Javascript가 IE에서 실패합니다

<script type="text/javascript"> 
    // content of the extenral js file 
    ... 
    var bar = {}; 
    bar.foo = {}; 
    ... 
    bar.foo.class = {}; 
    bar.foo.class.method = function() {...}; 
    ... 
</script> 
<script type="text/javascript"> 
    // content of my own javascript code 
    ... 
    function load() { 
    ... 
    bar.foo.class.method(); 
    ... 
    } 
    ... 
</script> 

를 프레임 워크를 들어 내가 즉, (한 곳에서 두 부분을 할 수 없습니다 사용하고 하나 둘 JS 외부 파일에 또는 둘 모두 내 자신의 인라인에 js 코드). 이제이 코드는 Firefox, Chrome 및 Safari에서 작동하지만 IE에서는 작동하지 않습니다. IE 디버거에서 다음과 같은 오류가 표시됩니다. " 'foo'속성의 값을 가져올 수 없습니다. 객체가 null이거나 정의되지 않았습니다.

첫 번째 태그에 정의 된 bar.foo.class가 두 번째 태그 또는 첫 번째 태그 앞에 두 번째 태그가 실행됩니다 (첫 번째 태그는 모두 클래스 정의에 관한 것이고 실제 워크 플로는 없음).

IE에서이 문제를 해결하는 방법을 아는 사람이 있습니까? 감사!

답변

0

나는 그것이 글로벌 될 것입니다 .. 또 다른 옵션을

<script type="text/javascript"> 
     // content of the extenral js file 
     ... 
     var bar = {}; 
     bar.foo = {}; 
     ... 
     bar.foo.class = {}; 
     bar.foo.class.method = function() {...}; 
     ... 
    </script> 
    <script type="text/javascript"> 
     // content of my own javascript code 
var _bar = bar; 
     ... 
     function load() { 
     ... 
     _bar.foo.class.method(); 
     ... 
     } 
     ... 
    </script> 

작업 후 var 키워드를 사용하지 마십시오 생각 .....이 가시성 문제 code..may 시도

<script type="text/javascript"> 
      // content of the extenral js file 
      ... 
      bar = {}; 
      bar.foo = {}; 
      ... 
      bar.foo.class = {}; 
      bar.foo.class.method = function() {...}; 
      ... 
     </script> 
     <script type="text/javascript"> 
      // content of my own javascript code 
      ... 
      function load() { 
      ... 
      bar.foo.class.method(); 
      ... 
      } 
      ... 
     </script> 
+0

첫 번째 동작하지 않습니다. 두 번째는 작동하지 않습니다. 그러나 흥미로운 점은 두 번째 코드를 사용하면 오류 정보가 "bar is undefined"라는 것입니다. 내 자신의 코드에서 오류 코드는 "속성 'foo'의 값을 가져올 수 없습니다 : null 또는 정의되지 않음을 유의하십시오. 나는 이것이 변수 'bar'가 두 번째 태그의 코드에 의해 인식되지만, 'foo'속성이 아니라는 것을 제안한다고 생각한다. 어쩌면 우리는 bar보다는 foo가 인식되지 않는 이유를 볼 수 있습니다 ... 그러나 나는 이것을 해결하는 방법을 여전히 확실하지 않습니다 ... – user1631973

+0

나는 (bar)를 경고하려고했습니다. IE에서는 "undefined"를 표시하고 다른 모든 항목에서는 "{object, object}"를 표시합니다. 그래서 문제는 여전히 첫 번째 태그에 정의 된 '막대'는 두 번째 태그의 코드에 의해 인식되지 않는다고 생각합니다 ... – user1631973

0

단어 class은 예약어입니다. klass과 같은 것을 사용하거나 foo["class"]과 같은 작업을 수행하십시오.

+0

미안하지만 클래스는 실례로 내 코드의 실제 이름이 아닙니다. 두 번째 태그에서 (즉, 호출 할 때) 또는 첫 번째 태그에서 (즉, 정의 할 때) foo [ "class"]를 사용하는 것을 의미합니까? – user1631973

관련 문제