Нужно мнение профессора: веб-опрос с iframe с jquery - PullRequest
0 голосов
/ 18 ноября 2011

Я разрабатываю форму опроса / контакта для веб-страниц клиентов.Основная идея заключается в том, что форму можно применить к веб-сайту, добавив только одну строку кода на веб-сайт клиента (например, fb like-button).

Я знаю, что есть несколько похожих реализаций, но я хочу сделать свой собственныйи другой стороны, чтобы изучить технику такого рода «приложений».

php-файл вызывается на веб-сайте клиента.Весь необходимый javascript передается на веб-сайт клиента, и div и его содержимое пишутся им (до этого используется запрос mysql для извлечения некоторых данных из базы данных, которые также отображаются внутри div, поэтому необходим php).Div также содержит iframe (который содержит основной контент), и контент загружается с другого сервера (чтобы избежать XSS).

Div открывается при нажатии на него кнопки open, а остальная часть будет скользить из-за границ браузера (поэтому это не всплывающее окно (модальное)).

Необходим JQueryконтролировать основные движения div и загружается в то же время, когда основной div.JQuery загружается также в iframe, потому что это необходимо для настройки формы обратной связи в iframe.

Я сейчас спрашиваю ...

  1. Есть ли недостатки, которые могут вызвать проблемы позже?
  2. Есть ли какие-либо потребности в улучшениях?
  3. Будет ли удвоение JQuery вызывать проблемы, или это может быть сделано другим способом?
  4. Любые другие уведомления такого рода реализации?

Я любезно предоставил бы больше информации, если это необходимо.

Ответы [ 2 ]

0 голосов
/ 18 ноября 2011

Будет ли двойной JQuery вызывать проблемы или это может быть сделано другим способом?

Да, но не так, как вы имеете в виду. Прекрасно иметь экземпляр jQuery в родительском окне и другой экземпляр в дочернем окне. Это лучший способ выполнения сценариев между документами, потому что в jQuery есть несколько функций, которые не работают при доступе к узлам из другого документа. Браузер не собирается загружать его дважды, и в наши дни накладные расходы на память и выполнение невелики.

Настоящая проблема в том, что вы предлагаете загрузить jQuery на чужую страницу. Ваш код в родительском окне является гостем для окна, принадлежащего кому-то другому, и это означает, что вам нужно программировать более осторожно, чтобы избежать столкновения со скриптом на родительской странице.

Загрузка большого волосатого фреймворка, такого как jQuery, на чужую страницу в качестве гостевого скрипта, на мой взгляд, хрупкая и грубая. Скорее всего, вы столкнетесь со скриптами на странице хоста, не в последнюю очередь с другими копиями jQuery (возможно, разных / несовместимых версий). Использование noConflict для запуска двух отдельных копий jQuery на странице улучшает ситуацию, но не решает всех проблем, поскольку два jQueries используют одни и те же узлы документа.

Внутри фрейма, сходи с ума, это твой документ. В окне хоста будьте консервативны. Внесите минимальное количество изменений, необходимых для реализации желаемого поведения. Не так сложно написать скользящий div без большой рамки.

0 голосов
/ 18 ноября 2011
  1. Конечно, у каждого решения есть недостатки. Но в принципе все нормально. Это позволяет вам значительно контролировать содержимое IFrame, хотя в этом нет необходимости.
  2. Может быть, вы найдете решение, в котором вам не нужен IFrame. Это может облегчить и особенно облегчить внедрение формы на страницу без IFrame, хотя это не должно быть проблемой. Если форма PHP размещена на другом сервере, IFrame может быть самым простым решением из-за проблем с AJAX и междоменных запросов.
  3. Это на самом деле не проблема. Если вы используете тот же URL для JQuery, браузер будет кешировать его. То же самое касается CSS и других файлов, которые также используются главной страницей. Они будут загружены только один раз. Если вы используете другую версию и другие CSS-файлы, вы увеличиваете количество запросов и время загрузки страницы. Не делай этого.
  4. Не то, что я знаю, но, вероятно, есть.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...