Как заработать в сети internet
Четверг, 02-Май-2024, 21:47
Меню сайта

Форма входа

Поиск

Календарь
«  Ноябрь 2013  »
ПнВтСрЧтПтСбВс
    123
45678910
11121314151617
18192021222324
252627282930

Архив записей

Друзья сайта
  • Úklid v Praze

  • Статистика



    Онлайн всего: 1
    Гостей: 1
    Пользователей: 0

    Главная » 2013 » Ноябрь » 9 » Javascript. Загрузка внешнего скрипта.
    04:09
    Javascript. Загрузка внешнего скрипта.
    Вот есть такое во мне. Страшно не люблю огромные простыни кода. И где есть возможность - делю его на отдельные файлы. Вот и для скриптов на iMacros  я искал возможность отделить часть функций и прототипов от основного скрипта, дабы не мешались под ногами. Одна проблема - загрузить их потом во время выполнения. Поиск по JS выдает кучу информации, но только связанной с разработкой веб-страниц или плагинов. Но это не сломило меня и я нашел таки решение проблемы. Первым вариантом было нечто очень нагруженное вызовами и... Да что рассказывать, вот оно:

    Код

    var file = Components.classes["@mozilla.org/file/local;1"]
      .createInstance(Components.interfaces.nsILocalFile);
    file.initWithPath("c:\\path\\to\\file\\myscript.js"); // <-- имя файла тут
    var scriptURI = Components.classes["@mozilla.org/network/io-service;1"]
      .getService(Components.interfaces.nsIIOService).getProtocolHandler("file")
      .QueryInterface(Components.interfaces.nsIFileProtocolHandler)
      .getURLSpecFromFile(file);
    Components.classes["@mozilla.org/moz/jssubscript-loader;1"]
      .getService(Components.interfaces.mozIJSSubScriptLoader)
      .loadSubScript(scriptURI);


    Перебор, но оно работает. Правда потом откопалось более изящное и простое решение:

    Код

    Components.classes["@mozilla.org/moz/jssubscript-loader;1"]
      .getService(Components.interfaces.mozIJSSubScriptLoader)
      .loadSubScript("file:///c:/path/to/file/myscript.js");


    Прошу любить и жаловать. А заодно и пользоваться. Правда осталось еще 2 проблемы, к которым я пока не смог найти решения. Во-первых, это любовь ФФ к кешированию всего и вся. Увы, но малейшие изменение прицепляемого файла требует перезагрузки браузера. Иначе изменение просто не будет учтено. Файл будет получен из кеша... Ну и во-вторых, я пока не смог изнутри скрипта определить папку, из которой он был запущен. То есть, надо пока жестко прописывать пути ко всем файлам. И любое перемещение скрипта требует его правки в области основных настроек. Хотя, если взять за правило в отдельных файлах держать только прототипы, которые используются в 2х и более скриптах, то имеет смысл для них просто завести отдельную папку и ссылаться на нее.
    К слову, один подобный прототип я опубликую в течении пары дней, в качестве замены несколько устаревшей статьи. В нем будет учтен мой прогресс в изучении JS и... ну и что-то еще. Это точно.
    Просмотров: 593 | Добавил: websponsory | Рейтинг: 0.0/0
    Всего комментариев: 0
    Добавлять комментарии могут только зарегистрированные пользователи.
    [ Регистрация | Вход ]
    Copyright MyCorp © 2024
    Бесплатный хостинг uCoz