Страницы

Поиск по вопросам

среда, 18 декабря 2019 г.

Динамическое добавление скрипта в iframe

#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); //что-то нужное }

Комментариев нет:

Отправить комментарий