Jump to content
  • 0

Загрузка скрипта


KomotoZ
 Share

Question

Прошу помощи с непонятным косяком

есть файл со скриптом, допустим 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
Указанный в ссылке скрипт не загружен

что за косяк?

Edited by KomotoZ
Link to comment
Share on other sites

Recommended Posts

  • 0

Протокол file:// указывает на локальные файлы компьютера.

Даже если заменить на http://, то все равно работать не будет из-за указания домена localhost и абсолютного пути к файлу

Почитайте в гугле про абсолютные и относительные пути

Link to comment
Share on other sites

  • 0
"file:\/\/localhost\/D:\Projects\JS\Script.js";

даже для локального пути - это ужасно!

Любой браузер при указании локальных путей в тегах понимает метод записи "/path/path/file.js"

Link to comment
Share on other sites

  • 0
даже для локального пути - это ужасно!

это я так игрался с адресами, пытаясь заставить загрузить

не к вам на комп, а на свой

а куда, собственно, на свой то?

и скрипт, и браузер находятся на одном компе...

Даже если заменить на http://, то все равно работать не будет из-за указания домена localhost и абсолютного пути к файлу

файл скрипта находится на моём компе. тестовая страница тоже находится на моём компе.

загрузка файла скрипта методом

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

при открытой тестовой странице (находящейся локально) проходит нормально не зависимо от типа адреса - относительного или абсолютного.

что scriptElem.src = "file:\/\/localhost\/D:\/Projects\/JS\/Script.js"; что scriptElem.src = "Script.js"; он грузится нормально в обоих случаях

ошибка появляется, если исходная страница открыта с внешнего сервера

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

Edited by KomotoZ
Link to comment
Share on other sites

  • 0
а куда, собственно, на свой то?

и скрипт, и браузер находятся на одном компе...

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

Что значит с другого сервера?

Запись "localhost" в адресе означает "с этого компа". То есть, с того компа с которого просматривают адрес локалхост.

И кстати скрипт можно проще записать:


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

Link to comment
Share on other sites

  • 0

блин, так старался сразу максимально ясно изложить вопрос, но никто не понимает...

поставлю вопрос по-другому:

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

Link to comment
Share on other sites

  • 0

блин, так старался сразу максимально ясно изложить вопрос, но никто не понимает...

поставлю вопрос по-другому:

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


javascript: var scriptElem = document.createElement ("SCRIPT"); scriptElem.src = "http://mysite.ru/scr.js"; document.body.appendChild (scriptElem); void (0);

Link to comment
Share on other sites

  • 0
scriptElem.src = "http://mysite.ru/scr.js";

у меня не стоит сервер и скрипт не настолько важен, чтобы его ставить

есть ещё варианты?

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

ведь должно?

Link to comment
Share on other sites

  • 0

да проблемы то нет, но, блин, смысл? неужели нет способа подгрузить в свой же браузер свой же файл?

В свой браузер можно, только зачем вы нас тут путаете? Это же вы писали?
при этом если исходная страница открыта с этого же компа (для теста) всё нормально, но если с другого сервера (yandex.ru, google.com, etc.), то выдаёт ошибку
Link to comment
Share on other sites

  • 0

хм...

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

вот открыт у Вас яндекс, в его страницу, открытую Вами, нужно загрузить тот самый скрипт

но он не грузится

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

как то так...

Link to comment
Share on other sites

  • 0


var script = document.createElement("script");
script.src = 'js/code.js';
document.getElementsByTagName("head")[0].appendChild(script);

аналог этого кода написан в первом сообщении

проблема не в самом факте загрузки, а в том, что на одни страницы скрипт грузится, а на другие нет

Link to comment
Share on other sites

  • 0

хм...

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

вот открыт у Вас яндекс, в его страницу, открытую Вами, нужно загрузить тот самый скрипт

но он не грузится

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

как то так...

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

Придётся тебе заливать файл на сервер.

Link to comment
Share on other sites

  • 0

рад, что наконец-то смог объяснить))) другу при личной встрече с полчаса понадобилось, чтоб понять проблему)))

так не получится сделать

косяк...

можно было бы из любого сайта получить доступ ко всей твоей файловой системе

да, вполне логично

но, тем не менее, косяк...

Придётся тебе заливать файл на сервер.

а если временно поменять baseURI страницы?

и, кстати, всё таки, почему не помогает расшаривание файла скрипта?

Edited by KomotoZ
Link to comment
Share on other sites

  • 0
И каждый браузер пытается смотреть не к вам на комп, а на свой

можно загружать файлы в рамках проекта (к ТС) не более

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

в ранних ie можно сейчас не знаю. Если ie до сих пор поддерживает vbscript, то можно, наверное

Link to comment
Share on other sites

  • 0
Если ie до сих пор поддерживает vbscript, то можно, наверное

Вероятней поддерживает, чем нет

можно загружать файлы в рамках проекта (к ТС) не более

Не совсем понял, что Вы подразумеваете под ТС? Про проекты понятно, но с TC ассоциируется только TotalCommander...

Edited by KomotoZ
Link to comment
Share on other sites

  • 0
и, кстати, всё таки, почему не помогает расшаривание файла скрипта?

все так настойчиво игнорируют этот вопрос... никто не знает?

и можно ли через baseURi страницу временно сделать для браузера локальной?

Link to comment
Share on other sites

  • 0
и, кстати, всё таки, почему не помогает расшаривание файла скрипта?

все так настойчиво игнорируют этот вопрос... никто не знает?

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

Link to comment
Share on other sites

  • 0

Не очень то понятно что вы вообще хотите сделать. В итоге то что должно получится? Только не надо код писать, человеческим языком объясните что должно быть в итоге и как работать.

Edited by wwt
Link to comment
Share on other sites

  • 0
Для того, чтобы иметь доступ к расшаренному файлу нужно знать IP компьютера на котором он лежит и прописывать абсолютный путь не от корневой категории местного компьютера, а от корневой категории интернета и начинать адрес с IP


scriptElem.src = "file:\/\/localhost\/D:\/Projects\/JS\/Script.js";

file://localhost/D:/Projects/ - вполне валидный адрес

и, кстати, всё таки, почему не помогает расшаривание файла скрипта?

"JS" - расшаренная папка:

scriptElem.src = "file:\/\/comp_ip\/JS\/Script.js";

так же не катит

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

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

В итоге то что должно получится?

нужно загрузить скрипт в произвольную страницу, доступа к исходникам которой нет

хм...

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

вот открыт у Вас яндекс, в его страницу, открытую Вами, нужно загрузить тот самый скрипт

но он не грузится

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

как то так...

Только не надо код писать, человеческим языком объясните

да, в общем то, и не собирался пока))

Edited by KomotoZ
Link to comment
Share on other sites

  • 0

KomotoZ

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

Link to comment
Share on other sites

  • 0
нужно загрузить скрипт в произвольную страницу, доступа к исходникам которой нет

1. Создаем на панеле закладок новую закладку.

2. В поле Адрес: вводим это:


javascript:(function(){alert(document.body.innerHTML);})();

3. Заходим на любой сайт жмем закладку и вуаля, скрипт заработал применительно к открытой вкладке браузера.

Edited by wwt
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy