Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Получить код js-скрипта, находящегося в файле на сервере (https://javascript.ru/forum/misc/27148-poluchit-kod-js-skripta-nakhodyashhegosya-v-fajjle-na-servere.html)

RomanA 04.04.2012 07:21

Получить код js-скрипта, находящегося в файле на сервере
 
Пишу программу, которая получает код нужной мне страницы. Пишу на php, код страницы получаю с помощью curl, после чего начинаю его обрабатывать, вытаскивая нужную информацию. При обработке столкнулся с проблемой. В коде страницы прописана ссылка на файл:

<script language="Javascript" type="text/javascript" src="/scripts/printdate.js?t=1333007404"></script>


А в нужном месте идет вызов функции из этого файла:

<td><script>printShortDate(1333447200000)</script></td>


Т. е. в браузере в нужном месте показана дата, а в исходном коде страницы на том месте - функция.

Вот в этом и возникает проблема! Мне нужна дата, а не функция с параметром! И я не совсем могу понять как это можно сделать.

Как я понимаю данную ситуацию: файл printdate.js находится на сервере. При отрисовке страницы, по всей видимости, содержимое этого файла куда-то (куда?) загружается. И далее, при продолжении отрисовки, натыкаясь на код printShortDate(1333447200000) запускается функция printShortDate, которая возвращает нужный код.

Вот здесь у меня позникает несколько вопросов:
1)Правильно ли я понимаю то, о чем написал выше и если нет, то в каких местах ошибаюсь?

2)Каким образом можно получить код файла printdate.js (попытка прописать путь в строке браузера завершилась неудачей)?
Если честно, сам код меня особо не интересует, меня больше интересует то, что возвращает функция printShortDate, находящаяся в этом файле. Поэтому, этот вопрос можно наверное и переформулировать: как выполнить функцию, находящуюся в файле на сервере?

Извиняюсь, если мои вопросы покажутся глупыми и неправильно сформулированными, с js и web до недавнего времени вообще не работал, только начал осваивать. Очень надеюсь на вашу помощь!

B@rmaley.e><e 04.04.2012 07:47

1. Да, правильно.

2. Просто прописать путь в строке браузера. Сам браузер действует аналогичным способом.
Правда, возможно, что на сервере при выдаче printdate.js проверяется реферер в запросе, и, если его нет, возвращается ошибка.
Либо такого файла вообще нет, а функция объявлена в другом месте.
Чтобы выполнить эту функцию, Вам нужно выполнить весь JS код, имеющий к ней отношение и подгружаемый на страницу. Для этого Вам понадобится какой-нибудь JS движок (V8, SpiderMonkey, Rhino, …).

Kolyaj 04.04.2012 09:31

Цитата:

Сообщение от RomanA
Мне нужна дата, а не функция с параметром!

Ну и возьмите дату из этой строчки.
Цитата:

Сообщение от RomanA
<td><script>printShortDate(1333447200000)</script></td>


RomanA 04.04.2012 09:46

Спасибо за информацию! :) Будем читать на данную тематику.

А проблемку свои решил) Видимо вчера ум за разум заехал и при прописывании пути к скрипту в одном месте писал двойной слэш... естесственно страница не находилась.

Сегодня попытался - и вуаля, всё работает! :)

RomanA 04.04.2012 09:53

Цитата:

Сообщение от Kolyaj (Сообщение 166930)
Ну и возьмите дату из этой строчки.

Просто я не знал, что эти цифры означают)) Думал как-то хитро закодированная информация. А судя по содержимому скрипта и заглядыванию в гугл - количество миллисекунд, прошедших с 00:00 1 января 1970 года. :)


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