#javascript #iframe
Есть iframe, генерирующийся динамически. Что в нём - я не знаю, но доступ к нему через contentWindow есть. Подскажите пожалуйста, как извне добавить туда скрипт так, чтобы он выполнился первее всех остальных там уже находящихся. P.S. Чтоб было понятно - скрипт изменяет код функции console.log(); Собственно динамическая генерация iframe: var frame = document.createElement("iframe"); frame.setAttribute("SRC", [*ссылка на frame*]); document.body.appendChild(frame); //далее попытки запихнуть туда свой собственный скрипт
Ответы
Ответ 1
Это пример кода показывает когда завершается загрузка вашего iframe. Но если домен в iframe не тот, то доступ к DOM невозможен, и вы все ровно ни как не сможете манипулировать с DOM iframe. Получите ошибку доступа. Подробно о совмесном использовании ресурсов разных источников можете прочитать тут. Обновляю ответ после комментария на ответ: Если доступ к iframe есть то взять элементы DOM iframe можно так. $("#theiframe").contents().find("#simple_elem") Но невозможно сделать так что бы ваш скрипт работал самым первым, потому что скрипты в нем начнут работать как только браузер загрузит их в DOM то есть все ровно они будут работать первым. До добавления вашего скрипта.Ответ 2
Решение найдено. В сторону установки скриптов в DOM не стоило и копать - дерево недоступно пока полностью не выполнятся другие скрипты. Достаточно сразу после установки iframe выполнить свой код в контексте этого iframe. Вот, как переопределить console.log в iframe: var frame = document.createElement("iframe"); frame.setAttribute("SRC", [*ссылка на frame*]); document.body.appendChild(frame); var bounding = console.log.bind(frame.contentWindow.console); frame.contentWindow.console.log = function(message) { bounding(message); //что-то нужное }
Комментариев нет:
Отправить комментарий