문제

나는 둘 다와 함께 일하고 있습니다 amq.js (ActiveMQ) 및 구글지도.이 순서대로 스크립트를 로드합니다.

<head>
    <meta http-equiv="content-type" content="text/html;charset=UTF-8" />
    <title>AMQ & Maps Demo</title>

    <!-- Stylesheet -->
    <link rel="stylesheet" type="text/css" href="style.css"></link>

    <!-- Google APIs -->
    <script type="text/javascript" src="http://www.google.com/jsapi?key=abcdefg"></script>

    <!-- Active MQ -->
    <script type="text/javascript" src="amq/amq.js"></script>
    <script type="text/javascript">amq.uri='amq';</script>

    <!-- Application -->
    <script type="text/javascript" src="application.js"></script>
</head>

그러나 내 application.js에서는 지도가 제대로 로드되지만 AMQ로 주제를 구독하려고 하면 오류가 발생합니다.AMQ는 Firefox의 오류 콘솔에 객체가 정의되지 않았다고 말하는 프로토타입에 의존합니다.스크립트 로드가 완료되기 전에 amq 개체를 사용하는 데 문제가 있는 것 같습니다. 내 application.js에서 사용하기 전에 두 스크립트가 모두 로드되는지 확인하는 방법이 있나요?

Google에는 다음과 같은 멋진 함수 호출이 있습니다. google.setOnLoadCallback(initialize); 훌륭하게 작동합니다.amq.js에 이와 같은 것이 있는지 잘 모르겠습니다.

도움이 되었습니까?

해결책

내 application.js에서 사용하기 전에 두 스크립트가 모두 로드되는지 확인하는 방법이 있나요?

JavaScript 파일은 순차적으로 로드되어야 합니다. 그리고 차단 따라서 당신이 의존하고 있는 스크립트가 특이한 일을 하지 않는 한 당신이 해야 할 일은 다른 파일 다음에 application.js를 로드하는 것뿐입니다.

비차단 JavaScript 다운로드 스크립트가 로드되는 방법에 대한 정보가 있습니다(그리고 차단을 해제하는 몇 가지 기술에 대해 설명합니다).

다른 팁

도메인 간 스크립트는 사이트 자체의 스크립트 다음에 로드되므로 오류가 발생합니다.흥미롭게도 여기서는 이것을 아는 사람이 아무도 없습니다.

Jquery에서는 다음을 사용할 수 있습니다.

$(document).ready(function(){/*do stuff here*/});

작업을 수행하기 전에 자바스크립트가 로드되고 DOM이 준비되었는지 확인합니다.

프로토타입에서는 이것이 작동할 것 같습니다

document.observe("dom:loaded", function() {/*do stuff here*/});

문제를 올바르게 이해했다면 ..도움이 될 것 같아요..

이 작업을 수행하기 위해 lib에 의존하고 싶지 않다면...내 생각엔 이것이 효과가 있을 것 같다:

<script>
   function doIt() {/*do stuff here*/}
</script>
<body onLoad="doIt();"></body>

나는 단일 스크립트로만 이와 비슷한 문제를 겪었습니다.내가 생각해 낸 해결책은 다음과 같습니다. addEventListener("load",fn,false)script 다음을 사용하여 생성된 객체 document.createElement('script') 다음은 표준 JS 파일을 로드하고 "포스트 로드" 스크립트를 추가할 수 있는 최종 함수입니다.

function addJavaScript( js, onload ) {
   var head, ref;
   head = document.getElementsByTagName('head')[0];
   if (!head) { return; }
   script = document.createElement('script');
   script.type = 'text/javascript';
   script.src = js;
   script.addEventListener( "load", onload, false );
   head.appendChild(script);
}

이것이 미래에 누군가에게 도움이 되기를 바랍니다.

두 스크립트를 사용하기 전에 모두 로드되는지 확인하는 방법이 있나요?

예.

마지막에 로드하려는 코드를 입력하세요(귀하의 application.js 물건)을 프로토타입으로 문서.관찰.이렇게 하면 프로토타입과 기타 작업이 완료되고 준비된 후에만 코드가 로드됩니다.(jQuery에 익숙하다면 이 기능은 jQuery의 $(document).ready )

AMQ는 FireFox의 오류 콘솔에 객체가 정의되지 않았다고 말하는 프로토타입에 의존합니다.

AMQ가 다음에 달려 있다는 뜻인가요? 프로토타입 라이브러리?제공하신 코드에서 해당 라이브러리에 대한 가져오기를 볼 수 없습니다.

AMQ가 프로토 타입 라이브러리에 의존한다는 것을 의미합니까?제공 한 코드에서 해당 라이브러리의 가져 오기를 볼 수 없습니다.

예, ActiveMQ의 javascript(amq.js)는 Prototype에 따라 다릅니다.amq.js에서는 _amq.js, Behavior.js 및 Prototype.js라는 3개의 스크립트를 로드합니다.

JavaScript 로드 순서 wrumsby에 도움을 주셔서 감사합니다.이것은 내 버그가 다른성에 있다는 것을 알려줍니다 :(

다른 문제가 있는 것 같아요.또한 ActiveMQ 5.0에서 5.1까지의 js 파일을 확인한 결과 역시 동일한 것으로 나타났습니다.5.0에서 5.1에서는 구독하려면 주제를 새로 고쳐야 하는 사항이 변경되었습니다.계속 찾아보겠지만 가능한 원인을 제거해 주셔서 감사합니다.

내장된 SharePoint 자바스크립트 방법을 사용하여 스크립트 실행을 제어할 수도 있습니다.

_spBodyOnLoadFunctionNames.push("yourFunction");
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top