Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > script src="" - как получить подключаемый код?


Автор: kanaris 29.5.2011, 22:41
Как в javascript получить код подключаемого скрипта?

Код

<script type="text/javascript" src="http://otherdomain.com/script.js"></sctipt>


через innerHTML получить нельзя, т.к. его нет.
Домен отличается от того, с которого "инклудится".

Автор: Sartorius 29.5.2011, 23:05
Цитата(kanaris @  29.5.2011,  23:41 Найти цитируемый пост)
Домен отличается от того, с которого "инклудится". 

Тогда никак, иначе возможна XSS атака.

Автор: kanaris 29.5.2011, 23:21
А через флеш это возможно? (с технологией флеш не знаком вообще, не знаю какие там меры приватности)

Автор: Sartorius 29.5.2011, 23:27
Для доступа через флеш сайт, к которому флеш-ролик обращается, должен иметь правильный crossdomain.xml. А что нужно то? Просто получить этот cкрипт на своей странице? Тогда можно через серверный сцнарий сделать. AJAX запрос на серверный скрипт своего домена, а он уже возьмет этот JS

Автор: Котокобра 30.5.2011, 10:23
почему нельзя? скрипты - такая же коллекция DOM, как и все остальное.

Код

javascript:alert(document.getElementsByTagName('script').length);

Автор: kanaris 30.5.2011, 15:45
Котокобра, не правильно понял. Нужно получить исходный код файла, который подключается (со стороннего домена). Видимо никак нельзя...

Цитата

А что нужно то? Просто получить этот cкрипт на своей странице? Тогда можно через серверный сцнарий сделать.


не, через сервер не получится. АйПи то должен быть клиентский...
Надо получить исходный код скрипта и выпарсить оттуда некоторые хеши-переменные.
Запросить напрямую после подключения скрипта их нельзя, т.к. они запрятаны в анонимную функцию.

Впринципе если написать: alert(functionName); - выскочит сообщение с исходным кодом функции. Т.е. каким-то образом можно преобразовать ее в строку и выпарсить. Но функция же анонимная. Есть ли способ получить массив анонимных функций?

Автор: Котокобра 30.5.2011, 19:23
ну сделай аякс на фрейме (для хрома, остальные xml-ем вытянут)
то есть передаешь фрейму ссылкуу на js, и забираешь body.innerHTML

хрен знает, насколько надежно, но вроде работает.

Автор: kanaris 31.5.2011, 14:40
так если фрейм будет на другом домене, работать не будет

Автор: Котокобра 1.6.2011, 02:13
kanaris, как это не будет? ты его открываешь во фрейме как текст. все равно, что в адресной строке браузера набрать полный путь к скрипту.

Автор: kanaris 1.6.2011, 09:39
Фрейм то работать будет! А вот доступ к его Dom-дереву будет невозможен. Выскочит ошибка access denied (попробуй сам)

Автор: Котокобра 1.6.2011, 09:51
kanaris, давай попробую, скинь код.

Автор: kanaris 1.6.2011, 18:21
пробуй

Код

<iframe id="test" src="http://example.com"></iframe>
<script type="text/javascript">

function checkIframe(){
    alert(document.getElementById('test').contentWindow.document.body.innerHTML);
}

</script>
<button onclick="checkIframe();">click me</button>

Автор: Котокобра 7.6.2011, 23:01
kanaris, 
ты был прав(

Автор: fidres 8.6.2011, 07:32
чё-т ваще не вкурил.
советую попользоваться старыми версиями обозревателей (где нет защиты от XSS на стороне клиента).
(в принципе, как и старой какой-нибудь операционкой, умеющей доставать что-то через тырнет...)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)