Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Загрузка скрипта (https://javascript.ru/forum/misc/37760-zagruzka-skripta.html)

KomatoZ 06.05.2013 02:56

Загрузка скрипта
 
Прошу помощи с косяком
есть файл со скриптом, допустим D:\Projects\JS\Script.js
его нужно загрузить в открытую в данный момент браузером произвольную страницу
в адресной строке прописываю скрипт:

javascript: var scriptElem = window.document.createElement ("SCRIPT"); scriptElem.type = "text\/javascript"; scriptElem.src = "file:\/\/localhost\/D:\/Projects\/JS\/Script.js"; window.document.body.appendChild (scriptElem); void (0);


при этом, если страница открыта с этого же компа (для теста), то всё нормально, но, если с внешнего сервера (yandex.ru, google.com, etc.), то выдаёт ошибку
Код:

[01.05.2013 22:57:21] Javascript - file://localhost/D:/Projects/JS/Script.js
Указанный в ссылке скрипт не загружен

т.е., если открыть яндекс и попытаться в его страницу загрузить скрипт, то он не загрузится, а если открыть какую-нибудь сохранённую себе на комп страницу, то всё нормально

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

ksa 06.05.2013 08:46

Цитата:

Сообщение от KomatoZ
в чём косяк?

Ты сам ответил на свой вопрос, Карло... (с)
Цитата:

Сообщение от KomatoZ
это ограничения безопасности


qwerty-клавиатура 06.05.2013 15:06

через http://localhost/path/to/file грузи(в Opera кажись и через file:// будет работать не помню)

Deff 06.05.2013 15:58

KomatoZ,
С локального диска загрузка любых файлов ограничена в браузерах, только открытыми страницами опять жа с текущего компа,
Для инет страниц необходимо расположение js файла на инет-ресурсе

qwerty-клавиатура 06.05.2013 19:17

http://pastebin.com/1y8TpfDB

function loadScript(url, cb) {
    var d = document, 
        s = d.createElement('script');
    s.src = url;
    s.onload = cb;
    d.head.appendChild(s);
}

// по идеи скрипты загрузятся синхронно
function loadScripts(urls, cb) {
    loadScript( urls.shift(), function() {
        if (urls.length) {
            return loadScripts(urls, cb);
        }
        
        cb();
    } );
}


может пригодится

KomatoZ 06.05.2013 20:13

Цитата:

Сообщение от ksa
Цитата:

Сообщение от KomatoZ
тогда в чём косяк?

Ты сам ответил на свой вопрос, Карло... (с)
Цитата:

Сообщение от KomatoZ
это ограничения безопасности


Цитата:

Сообщение от KomatoZ
но, если скрипт расшарить и в src указать путь к расшаренному ресурсу, абсолютно ничего не меняется.

текущий вопрос вот в чём

Цитата:

Сообщение от qwerty-клавиатура
через http://localhost/path/to/file грузи(в Opera кажись и через file:// будет работать не помню)

Цитата:

Сообщение от KomatoZ
scriptElem.src = "file:\/\/localhost\/D:\/Projects\/JS\/Script.js";

это была изначальная попытка. не работает
http:// без установленного сервера работать тоже не будет
но вообще, к локальным ресурсам пути через file:// работают. в любом браузере, не только в Опере

Цитата:

Сообщение от Deff
С локального диска загрузка любых файлов ограничена в браузерах, только открытыми страницами опять жа с текущего компа

Цитата:

Сообщение от KomatoZ
как мне подсказали умные люди - это ограничения безопасности браузера

Цитата:

Сообщение от Deff
Для инет страниц необходимо расположение js файла на инет-ресурсе

Цитата:

Сообщение от KomatoZ
но, если скрипт расшарить и в src указать путь к расшаренному ресурсу, абсолютно ничего не меняется.

расшаренный ресурс это разве не инет ресурс?

Цитата:

Сообщение от qwerty-клавиатура
http://pastebin.com/1y8TpfDB
function loadScript(url, cb) {
	var d = document,
		s = d.createElement('script');
	s.src = url;
	s.onload = cb;
	d.head.appendChild(s);
}

благодарю, но чем он, по большому счёту, отличается от
Цитата:

Сообщение от KomatoZ
javascript:
var scriptElem = window.document.createElement ("SCRIPT");
scriptElem.type = "text\/javascript";
scriptElem.src = "file:\/\/localhost\/D:\/Projects\/JS\/Script.js";
window.document.body.appendChild (scriptElem);
void (0);


qwerty-клавиатура 06.05.2013 23:15

тебе и пытаются объяснить, что в соответствии с политикой безопасности, броузер НЕ МОЖЕТ ПОДКЛЮЧАТЬ СКРИПТЫ по протоколу file://, если хочешь подключить скрипт загрузи его себе на сайт, либо запусти сервер и подключи http://localhost/path/to/script.js. Мой код, там callback на script.onload вешается

KomatoZ 06.05.2013 23:30

Цитата:

Сообщение от qwerty-клавиатура
НЕ МОЖЕТ ПОДКЛЮЧАТЬ СКРИПТЫ по протоколу file://

вообще? с какого перепугу?

Цитата:

Сообщение от qwerty-клавиатура
Мой код, там callback на script.onload вешается

ну onload срабатывает после загрузки и по данной теме он, по моему, ни к чему...

edison 06.05.2013 23:46

Цитата:

вообще? с какого перепугу?
с такого, чтобы люди не свиснули файлы с твоего компьютера, или компьютера к которому ты имеешь доступ

KomatoZ 09.05.2013 02:14

хммм... и как же тогда быть?


Часовой пояс GMT +3, время: 01:14.