2013-06-14 4 views
1

Вот моя текущая настройка:Загрузка внешних Javascript в букмарклет с помощью загрузчика сценария

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

Что я хочу сделать:

  1. Пользователь добавляет загрузчик скрипт в закладки панели инструментов
  2. Они щелкают его, и он загружает скрипт из нашего Sharepoint.

Таким образом, если мне нужно внести какие-либо изменения, им не нужно ничего делать, и изменения будут отражены автоматически.

Мои закладки или скрипты зависят от jQuery, чтобы выполнить квесты ajax и просто для общей простоты использования.

В настоящее время я использую это: http://benalman.com/projects/run-jquery-code-bookmarklet/

Есть рамки, которые я могу использовать для такого рода вещи? Я знаю, что Visual Event использует загрузчик, но поскольку он был сжат с помощью Closure, я не могу сказать, что он делает. Я понимаю, что, поскольку вещи загружаются асинхронно в Javascript, я должен был бы обернуть весь мой код внутри загружаемого jquery, что хорошо. Мне просто нужен способ сделать это.

ответ

6

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

изменить URL, чтобы указать на ваш сценарий:

javascript:(function(){document.getElementsByTagName('head')[0].appendChild(document.createElement('script')).src='http://domain.com/scripts/external.js?'+Math.random();}()); 

если интрасеть имеет настройки приличная кэширования, вы можете удалить «+ Math.random()» часть, но в интрасети, производительность редко проблема для загрузки одного URL-адреса по требованию, случайный URL-адрес гарантирует, что каждый всегда получит последнюю копию.