Как изменить данные в калькуляторе, который подгружается через iframe?
Столкнулся с такой задачей.
Есть сайт, в который через iframe подгружается скрипт калькулятора. Калькулятор расчитывает стоимость ремонта помещения. Сам калькулятор делался для клиента давно и существует по сути как отдельный сайт (но лежит на том же сервере в папке с сайтом, т.е. это "подконтрольный нам сайт" и его можно модифицировать в своих целях). Т.е. это набор php, js - файлов, файла стилей, html, картинок и т.д. Т.е. по сути отдельный сайт, который лежит на сервере в папке с основным сайтом и просто в нужную страницу подгружается через iframe. От клиента поступила задача немного доработать этот калькулятор. А именно: сделать возможность авторизации пользователя на сайте, и в зависимости от авторизованного пользователя подставить в калькулятор нужные данные. Данные хранятся в js файле. Вот я сижу и думаю. Будь калькулятор встроен в сайт не через iframe, то я бы взял из базы данные авторизованного пользователя и заменил бы их в этой js-ке, а точнее не в js-ке, а вывел бы эти параметры прямо в странице в теге
Я много всего понаписал. Немного переформулировал, менее многословно:
если я пропишу какие-то JS-параметры, то будет ли они видны для скрипта в html-ке, подгруженной через iframe?
И тот же вопрос про php-переменные.
И если не будут видны, то что делать?
Но если js-файл - это отдельный файл, то в нем я не могу ничего поменять. Я же могу менять только когда js-код является частью страницы. В этом случае смопощью php, например, я через echo() могу прописать все параметры.
В заголовок калькулятора подключаете "типа js-скрипт" pastebin.com/g1xkGRDC
На самом деле он генерируется динамически, pastebin.com/bbuXbQ91
и в нем выводятся данные для текущего пользователя.
Если документ с калькулятор не соответствует политике происхождения (например, загружен с другого домена), то никакого доступа к переменным не будет. В этом случае можно передавать данные через GET-параметры адресной строки загружаемого документа (как вариант — в hash).
Т.е. калькулятор был разработан именно для этого сайта. Просто его оформили таким образом. Как отдельный сайт, который пихается в основной через iframe
Тогда с помощью свойства window.parent получаете доступ к глобальному контекста родительского окна и забираете нужные значения глобальный переменных или объекта (что гораздо предпочтительнее).
Что не отменяет и вариант работы с адресной строкой location.search или location.hash.