Сведения о вопросе

Junior

17:57, 3rd August, 2020

Теги

JavaScript Порядок Загрузки

Просмотров: 504   Ответов: 8

Я работаю как с amq.js (ActiveMQ), так и с Google Maps . Я загружаю свои скрипты в таком порядке

<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 есть что-то подобное.



  Сведения об ответе

park

05:00, 27th August, 2020

междоменные скрипты загружаются после скриптов самого сайта, поэтому вы получаете ошибки. интересно, что здесь об этом никто не знает.


  Сведения об ответе

darknet

16:38, 23rd August, 2020

Есть ли способ убедиться, что оба скрипта загружаются, прежде чем я использую их в своем application.js?

Файлы JavaScript должны загружаться последовательно и блокироваться , поэтому, если только сценарии, от которых вы зависите, не делают что-то необычное, все, что вам нужно сделать, - это загрузить application.js после других файлов.

Неблокирующая загрузка JavaScript содержит некоторую информацию о том, как загружаются скрипты (и обсуждает некоторые методы для подрыва блокировки).


  Сведения об ответе

ASSembler

21:06, 1st October, 2020

в jquery вы можете использовать:

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

это гарантирует, что javascript загружен и dom готов, прежде чем делать ваши вещи.

в прототипе похоже это может сработать

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

Если я правильно понимаю вашу проблему.. Я думаю, что это может помочь..

Если вы не хотите полагаться на lib, чтобы сделать это... Я думаю это может сработать:

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


  Сведения об ответе

repe

13:43, 16th August, 2020

У меня была похожая проблема, только с одним сценарием. Решение, которое я придумал, состояло в том, чтобы использовать addEventListener("load",fn,false) для объекта script , созданного с помощью document.createElement('script') вот последняя функция, которая загружает любой стандартный файл JS и позволяет добавить сценарий "post load".

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

Я надеюсь, что это может помочь кому-то в будущем.


  Сведения об ответе

darknet

18:25, 20th August, 2020

Есть ли способ убедиться, что оба скрипта загружаются, прежде чем я их использую?

Да.

Поместите код, который вы хотите загрузить последним (ваш application.js материал) в document.observe прототипа . Это должно гарантировать, что код загрузится только после того, как прототип + другие материалы будут закончены и готовы. (Если вы знакомы с jQuery, эта функция аналогична $(document).ready jQuery )


  Сведения об ответе

LAST

12:36, 2nd August, 2020

AMQ зависит от прототипа, который консоль ошибок в FireFox говорит, что объект не определен.

Вы хотите сказать, что AMQ зависит от библиотеки прототипов ? Я не вижу импорта для этой библиотеки в коде, который вы предоставили.


  Сведения об ответе

DO__IT

04:02, 12th August, 2020

Вы хотите сказать, что AMQ зависит от Библиотека прототипов? Я ничего не вижу. импорт для этой библиотеки в коде вы же все предусмотрели.

Да для ActiveMQ javascript (amq.js) действительно зависит от прототипа. В amq.js он загружает 3 скрипта, _amq.js, behaviour.js и prototype.js.

Спасибо Вам за вашу помощь на JavaScript load order wrumsby. Это говорит мне, что мой Жук находится в другом замке :(

Наверное, у меня другая проблема. Я также проверил файлы js от ActiveMQ 5.0 до 5.1 и заметил, что они тоже были одинаковыми. Что-то изменилось в 5.0 на 5.1, что требует обновления для подписки на темы. Я продолжу поиски, но спасибо, что устранили эту возможную причину.


  Сведения об ответе

nYU

01:25, 13th August, 2020

Вы также можете использовать встроенный метод SharePoint javascript для управления выполнением ваших сценариев;

_spBodyOnLoadFunctionNames.push("yourFunction");


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться