Вы правы, что обычно это просто скрипт, который клиент встраивает на свой сайт. Однако то, что последует за этим, немного сложнее.
1. Вставить скрипт
Первый шаг, как было сказано, - это создать скрипт на целевой странице.
По сути, этот скрипт является просто фрагментом кода JavaScript. Это очень похоже на то, что вы бы имели на своей странице.
Этот скрипт должен генерировать контент на странице клиента, который вы хотите отобразить.
Однако, есть некоторые вещи, которые необходимо учитывать:
- Вы не можете использовать какие-либо библиотеки (или если вы это делаете, будьте очень осторожны с тем, что вы используете): они могут конфликтовать с тем, что уже есть на странице, и нарушать работу сайта клиента. Ты не хочешь этого делать.
- Никогда ничего не переопределяйте, так как переопределение может нарушить работу сайта клиента: сюда входят прослушиватели событий, собственные свойства объектов и т. Д. Например, всегда используйте
addEventListener
или addEvent
с событиями, потому что они позволяют иметь несколько слушателей
- Вы не можете доверять никаким стилям: все стили HTML-элементов, которые вы создаете, должны быть встроены, потому что веб-сайт клиента может иметь собственный стиль CSS для них.
- Вы не можете добавить свои собственные правила CSS: они могут снова взломать сайт клиента.
Эти правила применяются к любому сценарию или контенту, который вы запускаете непосредственно на сайте клиента. Если вы создаете iframe и отображаете свой контент там, вы можете игнорировать эти правила в любом контенте, который находится внутри фрейма.
2. Сценарий процесса на вашем сервере
Ваш встраиваемый скрипт обычно должен генерироваться скриптом на вашем сервере. Это позволяет вам включать логику, например, выбирать, что отображать на основе параметров или данных из базы данных вашего приложения.
Это может быть написано на любом языке, который вам нравится.
Обычно URL вашего скрипта должен содержать какой-то идентификатор, чтобы вы знали, что отображать. Например, вы можете использовать идентификатор, чтобы сообщить, какой это сайт клиента или что-то в этом роде.
Если ваше приложение требует, чтобы пользователи вошли в систему, вы можете обработать это как обычно. Тот факт, что серверный скрипт вызывается другим веб-сайтом, не имеет значения.
Связь между встроенным скриптом и вашим сервером или фреймами
В этом есть несколько хитростей.
Как вы, возможно, знаете, XMLHttpRequest не работает в разных доменах, поэтому вы не можете его использовать.
Простейшим способом отправки данных с другого сайта было бы использование iframe и предоставление пользователю формы внутри iframe (или запуск XMLHttpRequest внутри фрейма, поскольку содержимое iframe находится на вашем собственном сервере, поэтому нет междоменной связи)
Если ваш встроенный скрипт отображает содержимое в диалоговом окне iframe, вам может потребоваться указать скрипту, встроенному на сайт клиента, когда закрывать iframe. Это может быть достигнуто, например, с помощью window.postMessage
Для postMessage см. http://ejohn.org/blog/cross-window-messaging/
Для междоменной связи см. http://softwareas.com/cross-domain-communication-with-iframes