Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Элементарное API на Javascript (https://javascript.ru/forum/misc/51461-ehlementarnoe-api-na-javascript.html)

Smokvin 07.11.2014 18:21

Элементарное API на Javascript
 
Здравствуйте. Стоит следующая задача:

- На сайте 1 расположен Javascript скрипт А. В нём расположена переменная, в которую записано значение.

- На сайте 2 расположен Javascript скрипт Б. В нём расположен скрипт, который обращается к скрипту А с сайта 1 и получает значение переменной, "передавая" имя этой переменной.


Скажите, пожалуйста, это возможно реализовать средствами Javascript? Если да -то как? Может быть у Вас есть примеры подобной реализации?

Заранее благодарю за любые наводки по теме.

danik.js 07.11.2014 18:49

a.js:
var x = 'abc';

b.js:
alert(x);


HTML:

<script src="http://site1.ru/a.js"></script>
<script src="http://site2.ru/b.js"></script>


С чем возникли сложности? Почитай еще про JSONP.

Smokvin 07.11.2014 18:59

Да, забыл самое главное.
На сайте 2 не должно быть подключения скриптов с сайта 1.
Это возможно?

Aetae 07.11.2014 19:14

Если они разнодоменные и оба ваши - можно потрепыхаться.
Если они разнодоменные и оба не ваши или один из них не ваш - на чистом js без вариантов, только подключая сервер.

Smokvin 07.11.2014 19:37

Цитата:

Сообщение от Aetae (Сообщение 339656)
Если они разнодоменные и оба ваши - можно потрепыхаться.
Если они разнодоменные и оба не ваши или один из них не ваш - на чистом js без вариантов, только подключая сервер.

1 сайт мой. На нём содержится основной скрипт, в котором иногда меняются определённые значения.

2 сайт - чужой сайт. На него устанавливается мой скрипт Б. Но этот скрипт должен работать на основе получаемых данных из скрипта А, установленных на моём сайте.

Смысл в том, что есть необходимость в изменении параметров основного скрипта, которые будут влиять на работу дочерних скриптов на чужих сайтах, на которых установлены дополнительные скрипты (Б).

Но из-за одной заморочки на чужой сайт можно ставить только Скрипт Б, который будет физически располагаться на сайте 2. Нельзя на сайте 2 светить в подключённых скриптах сайт 1.

Aetae 07.11.2014 19:42

Что значит "нельзя светить"?
Есть всего два варианта: либо сайт 2 обращается за данными к сайту 1 абсолютно неважно каким образом - и это видно в сетевых обращениях; либо сайт 2 не обращается к сайту 1 и не получает никаких данных принципиально.
Всё.

Smokvin 07.11.2014 19:49

Цитата:

Сообщение от Aetae (Сообщение 339658)
Что значит "нельзя светить"?
Есть всего два варианта: либо сайт 2 обращается за данными к сайту 1 абсолютно неважно каким образом - и это видно в сетевых обращениях; либо сайт 2 не обращается к сайту 1 и не получает никаких данных принципиально.
Всё.

Открытие исходного кода и просмотр подключённых через <script type="text/javascript" src=""></script> не должно содержать подключённого скрипта А с сайта 1 (или какого-либо вообще скрипта с упоминанием домена сайта 1).

Более глубокие проверки - не важны. Главное чтобы скрипт не был подключён явным образом.

danik.js 08.11.2014 11:22

Цитата:

Сообщение от Smokvin
Более глубокие проверки - не важны

То есть ты понимаешь, что полный чайник ничего не поймет, но если он в состоянии нажать F12 и кликнуть по табу Сеть то все всплывет наружу?
Если с этим ок, то у тебя два способа получить данные с другого домена:
1) Кроссдоменный XMLHttpRequest запрос
2) JSONP

Для первого варианта пишешь PHP скрипт который на OPTIONS запрос выставит Access-Control-Allow-Origin: * (такой запрос шлет браузер перед тем, как отправить кроссдоменный GET/POST-запрос), а на GET/POST уже отдает JSON с нужными данными. Либо можно обойтись (вроде бы) без PHP, настроив вебсервер на отдачу такого заголовка.

Второй проще:
var script = document.createElement('script');
script.src = 'site1.ru/a.js';
document.body.appendChild(script);


a.js должен вызвать некую функцию из b.js передав нужные данные.


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