Question

Je suis en train de travailler avec les deux amq.js (ActiveMQ) et Google Maps.Je charge mes scripts dans cet ordre

<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>

Toutefois, dans mon application.js il charge les Cartes bien, mais j'obtiens une erreur lors de la tentative de s'abonner à un Sujet avec AMQ.AMQ dépend de prototype qui la console d'erreur de Firefox dit que l'objet n'est pas définie.Je pense que j'ai un problème avec l'aide de l'amq objet avant que le script a fini de se charger. Est-il un moyen de s'assurer que les deux scripts de chargement avant que je les utilise dans mon application.js?

Google a cette belle appel de fonction google.setOnLoadCallback(initialize); qui fonctionne très bien.Je ne suis pas sûr amq.js a quelque chose comme cela.

Était-ce utile?

La solution

Est-il un moyen de s'assurer que les deux scripts de chargement avant que je les utilise dans mon application.js?

Les fichiers JavaScript doit se charger de manière séquentielle et bloc donc, à moins que les scripts que vous êtes en fonction sur sont en train de faire quelque chose d'inhabituel tous vous avez besoin à faire est de charger application.js après les autres fichiers.

Non-bloquant JavaScript Téléchargements a quelques informations sur la façon dont les scripts de chargement (et examine quelques-unes des techniques pour contourner le blocage).

Autres conseils

inter-domaine scripts sont chargés après les scripts du site lui-même, c'est pourquoi vous obtenez une erreur.fait intéressant, personne ne le sait ici.

en jquery, vous pouvez utiliser:

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

ce qui fait que le javascript est chargé et que le dom est prêt avant de faire vos trucs.

dans le prototype, il ressemble à cela pourrait fonctionner

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

Si je comprends votre problème correctement..Je pense que cela peut aider..

Si vous ne voulez pas compter sur une lib pour ce faire...Je pense que cela peut fonctionner:

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

J'ai eu un problème similaire à ce, uniquement avec un seul script.La solution je suis venu avec était d'utiliser addEventListener("load",fn,false) pour un script objet créé à l'aide de document.createElement('script') Voici la dernière fonction qui permet de charger n'importe quel standard de fichier JS et vous permet d'ajouter un "poste de charge de script".

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);
}

J'espère que cela peut aider quelqu'un dans le futur.

Est-il un moyen de s'assurer que les deux scripts de charge avant de les utiliser?

Oui.

Mettre le code que vous souhaitez charger la dernière (votre application.js trucs) dans du prototype document.observer.Cela devrait garantir que le code de la charge qu'après prototype + d'autres trucs est terminé et prêt.(Si vous êtes familier avec jQuery, cette fonction est similaire à du jQuery $(document).ready )

AMQ dépend de prototype qui la console d'erreur de FireFox dit que l'objet n'est pas définie.

Tu veux dire que l'AMQ dépend de la Prototype de la bibliothèque?Je ne peux pas voir une importation de la bibliothèque dans le code que vous avez fournis.

Tu veux dire que l'AMQ dépend de la Prototype de la bibliothèque?Je ne peux pas voir un importer pour bibliothèque dans le code vous avez fournie.

Oui pour ActiveMQ du javascript (amq.js) ne dépend pas de Prototype.Dans le amq.js il charge les 3 scripts, _amq.js, behaviour.js et prototype.js.

Merci à vous pour votre aide sur le JavaScript de l'ordre de chargement wrumsby.Cela me dit que mon bug est dans un autre château :(

Je suppose que j'ai un problème différent.J'ai aussi vérifié les fichiers js de ActiveMQ 5.0 vers 5.1 et remarqué qu'ils étaient la même chose aussi.Quelque chose a changé dans la version 5.0 vers 5.1 qui nécessite une actualisation pour les sujets à s'abonner.Je vais continuer à chercher, mais merci pour éliminer cette cause possible.

Vous pouvez également utiliser le construit en SharePoint javascript la méthode de contrôle de l'exécution de vos scripts;

_spBodyOnLoadFunctionNames.push("yourFunction");
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top