Я собираюсь создать инструмент стиля виджета, который будет работать следующим образом:
- Его можно включить на любую страницу, поместив на эту страницу комбинацию скрипт/кнопка.
- Кнопка при нажатии загрузит форму с моего сайта, которую можно заполнить и отправить.
- В зависимости от предоставленной информации может отображаться другая форма — например, вторая страница с капчей, или страница подтверждения с требуемым действием, или, может быть, просто закрытие формы, или какое-то другое действие, которое я добавлю позже.
Если бы мне нужно было открыть всплывающее окно, это было бы легко, просто создайте его как обычную страницу. Однако включение этого на страницу вызова создает несколько проблем.
Если я на самом деле загружаю содержимое формы в локальный div на вызывающей странице, оно становится частью содержимого страницы. Я знаю, что могу в некоторой степени манипулировать этим содержимым с помощью скрипта (он загрузит скрипт с моего сайта для этой конкретной версии виджета), повторно опубликовать формы и загрузить их в тот же div, скрыть div, когда я закончу с это и т. д. Но кажется, что это все усложнит.
Мой другой вариант - сделать все это в iframe, поэтому на самом деле это не часть страницы загрузки страницы вызова. Таким образом, я чувствую, что теряю некоторые функции, которые могут мне понадобиться позже. Наверное, я все равно пойду этим путем.
Однако, прежде чем я начну этот путь, я подумал, что хотел бы спросить, есть ли у кого-нибудь какие-нибудь советы о том, как лучше всего включить сложную серию страниц в другую страницу?
Что бы я ни делал, я хочу быть уверен, что не закрою двери для своей возможности изменить способ работы виджета, я обязательно добавлю функциональность позже, поэтому важно держать мои варианты открытыми для изменений.
Спасибо!
Изменить
Что касается вопроса JotaBe, на стороне сервера я буду использовать PHP.
Однако я почти уверен, что это не имеет значения, так как обработка PHP (как всегда) будет происходить на сервере. Все, что клиент (запрашивающая страница) будет знать, это то, что он запросил, а затем получил активы JS/HTML/CSS/JSON/ETC через HTTP. Он не будет знать или заботиться о том, как сервер сгенерировал эти ресурсы.
Если это поможет вам представить это, это основная идея того, как клиент и сервер (если я не придумаю лучшего способа) будут работать вместе:
Страница клиента (при загрузке) запросит файл .js с моего сайта. Этот файл будет создан динамически на основе запрошенного URL-адреса. Например, учетная запись № 74 запросит http://mysite.com/widget/js/74.js и получит ресурсы JavaScript, настроенные для этой учетной записи.
Когда нажимается «кнопка виджета», он будет использовать JavaScript для запроса HTML-формы с моего сайта и тем или иным образом включать ее на страницу (какой способ лучше всего - это весь вопрос). HTML-форма будет сгенерирована динамически и настроена для учетной записи № 74 на основе запроса (т.е.: http://mysite.com/widget/form/74.php).
После заполнения пользователем форма будет отправлена на мой сайт. Публикация будет обработана, и будут происходить вещи, опять же в зависимости от запрашивающей учетной записи (т. е.: action=http://mysite.com/widget/post/74.php). ). На этом этапе мне может потребоваться отклонить форму и запросить повторную публикацию из-за неудачной проверки, проверки по капче и т. д., или мне может потребоваться отобразить страницу подтверждения, или просто закрыть форму, или выполнить какое-либо другое действие.