ggbb

Пользователь

Регистрация: 04.11.2011

Сообщения: 2125

Рейтинг: 1563

ggbb

Регистрация: 04.11.2011

Сообщения: 2125

Рейтинг: 1563

Сап дотач. Недавно захотелось чуток облегчить себе работу и запилить на js уровня пятого класса через tampermonkey несколько кнопок для выполнения действий на сайте в обход всяких подтверждений и прочего popup мусора. В целом всё получалось довольно неплохо пока не напоролся на содержимое iframe. Суть в том что мне нужно вытащить или запихнуть туда что то, но если не подгружать фрейм кликом по нему - элементов куда можно запихнуть что то нету. Есть ли метод который принудительно инициализирует iframe? 

S30N1K

Пользователь

Регистрация: 24.09.2014

Сообщения: 7199

Рейтинг: 4911

Нарушения: 35

S30N1K

Регистрация: 24.09.2014

Сообщения: 7199

Рейтинг: 4911

Нарушения: 35

ggbb сказал(а):

Сап дотач. Недавно захотелось чуток облегчить себе работу и запилить на js уровня пятого класса через tampermonkey несколько кнопок для выполнения действий на сайте в обход всяких подтверждений и прочего popup мусора. В целом всё получалось довольно неплохо пока не напоролся на содержимое iframe. Суть в том что мне нужно вытащить или запихнуть туда что то, но если не подгружать фрейм кликом по нему - элементов куда можно запихнуть что то нету. Есть ли метод который принудительно инициализирует iframe? 

Нажмите, чтобы раскрыть...

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

ggbb

Пользователь

Регистрация: 04.11.2011

Сообщения: 2125

Рейтинг: 1563

ggbb

Регистрация: 04.11.2011

Сообщения: 2125

Рейтинг: 1563

S30N1K сказал(а):

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

Нажмите, чтобы раскрыть...

Мне надо что бы там что то появилось, да. Но кликать по нему не надо, следовательно в том вопрос - как его загрузить без нажатия? Триггер вроде не срабатывает

userfirstName

Пользователь

Регистрация: 19.11.2019

Сообщения: 113

Рейтинг: 43

userfirstName

Регистрация: 19.11.2019

Сообщения: 113

Рейтинг: 43

ggbb сказал(а):

Мне надо что бы там что то появилось, да. Но кликать по нему не надо, следовательно в том вопрос - как его загрузить без нажатия? Триггер вроде не срабатывает

Нажмите, чтобы раскрыть...
let frame = document.createElement('iframe')
frame.src = 'qwe'
document.body.appendChild(frame)

ggbb

Пользователь

Регистрация: 04.11.2011

Сообщения: 2125

Рейтинг: 1563

ggbb

Регистрация: 04.11.2011

Сообщения: 2125

Рейтинг: 1563

userfirstName сказал(а):
let frame = document.createElement('iframe')
frame.src = 'qwe'
document.body.appendChild(frame)
Нажмите, чтобы раскрыть...

И что должны делать эти 3 строчки?

userfirstName

Пользователь

Регистрация: 19.11.2019

Сообщения: 113

Рейтинг: 43

userfirstName

Регистрация: 19.11.2019

Сообщения: 113

Рейтинг: 43

//создаем элемент iframe
let frame = document.createElement('iframe')
 
//вставляем в него ссылку на видео - например
 
//вставляем наш элемент на сайт
document.body.appendChild(frame)

ggbb

Пользователь

Регистрация: 04.11.2011

Сообщения: 2125

Рейтинг: 1563

ggbb

Регистрация: 04.11.2011

Сообщения: 2125

Рейтинг: 1563

userfirstName сказал(а):
//создаем элемент iframe
let frame = document.createElement('iframe')
 
//вставляем в него ссылку на видео - например
 
//вставляем наш элемент на сайт
document.body.appendChild(frame)
Нажмите, чтобы раскрыть...

А мне нужна строчка которая открывает iframe

Rost

Пользователь

Регистрация: 12.02.2013

Сообщения: 30

Рейтинг: 101

Rost

Регистрация: 12.02.2013

Сообщения: 30

Рейтинг: 101

ggbb сказал(а):

Сап дотач. Недавно захотелось чуток облегчить себе работу и запилить на js уровня пятого класса через tampermonkey несколько кнопок для выполнения действий на сайте в обход всяких подтверждений и прочего popup мусора. В целом всё получалось довольно неплохо пока не напоролся на содержимое iframe. Суть в том что мне нужно вытащить или запихнуть туда что то, но если не подгружать фрейм кликом по нему - элементов куда можно запихнуть что то нету. Есть ли метод который принудительно инициализирует iframe? 

Нажмите, чтобы раскрыть...

 

Что за сайт и что за iframe на нём?

userfirstName

Пользователь

Регистрация: 19.11.2019

Сообщения: 113

Рейтинг: 43

userfirstName

Регистрация: 19.11.2019

Сообщения: 113

Рейтинг: 43

ggbb сказал(а):

А мне нужна строчка которая открывает iframe

Нажмите, чтобы раскрыть...

Что значит открывает?

S30N1K

Пользователь

Регистрация: 24.09.2014

Сообщения: 7199

Рейтинг: 4911

Нарушения: 35

S30N1K

Регистрация: 24.09.2014

Сообщения: 7199

Рейтинг: 4911

Нарушения: 35

ggbb сказал(а):

Мне надо что бы там что то появилось, да. Но кликать по нему не надо, следовательно в том вопрос - как его загрузить без нажатия? Триггер вроде не срабатывает

Нажмите, чтобы раскрыть...

Я кажется понял, ты наверное пытаешься вытянуть что то из фрейма пока сам фрейм еще не загрузился.

Только что набросал - работает и доставание контента из фрейма и помещение во фрейм что то своего

 

создал 2 страницы

 

Спойлер: "1.html"

jART5M1.png

 

Спойлер: "2.html"

8DiMUeZ.png

  Вторую подгружаю в первую фреймом  

Спойлер: "Результат в браузере"

BnODCOd.png

 

UPD

И еще - если содержимое фрейма другой сайт - то хрен ты что с содержимым сделаешь

ggbb

Пользователь

Регистрация: 04.11.2011

Сообщения: 2125

Рейтинг: 1563

ggbb

Регистрация: 04.11.2011

Сообщения: 2125

Рейтинг: 1563

S30N1K сказал(а):

Я кажется понял, ты наверное пытаешься вытянуть что то из фрейма пока сам фрейм еще не загрузился.

Только что набросал - работает и доставание контента из фрейма и помещение во фрейм что то своего

 

создал 2 страницы

 

Спойлер: "1.html"

jART5M1.png

 

Спойлер: "2.html"

8DiMUeZ.png

  Вторую подгружаю в первую фреймом  

Спойлер: "Результат в браузере"

BnODCOd.png

 

UPD

И еще - если содержимое фрейма другой сайт - то хрен ты что с содержимым сделаешь

Нажмите, чтобы раскрыть...

Сам фрейм не загружается даже когда страница готова, он загружается когда ты кликаешь по полю с комментом.

S30N1K

Пользователь

Регистрация: 24.09.2014

Сообщения: 7199

Рейтинг: 4911

Нарушения: 35

S30N1K

Регистрация: 24.09.2014

Сообщения: 7199

Рейтинг: 4911

Нарушения: 35

ggbb сказал(а):

Сам фрейм не загружается даже когда страница готова, он загружается когда ты кликаешь по полю с комментом.

Нажмите, чтобы раскрыть...

Ну так кликай прогамно по этому полю

чо за сайт?

Rinse

Пользователь

Регистрация: 12.02.2017

Сообщения: 1243

Рейтинг: 1043

Rinse

Регистрация: 12.02.2017

Сообщения: 1243

Рейтинг: 1043

Ты никак не можешь получить к фрейму доступ с js. Доступ закрыт на уровне браузера т.к. это уязвимость

S30N1K

Пользователь

Регистрация: 24.09.2014

Сообщения: 7199

Рейтинг: 4911

Нарушения: 35

S30N1K

Регистрация: 24.09.2014

Сообщения: 7199

Рейтинг: 4911

Нарушения: 35

Rinse сказал(а):

Ты никак не можешь получить к фрейму доступ с js. Доступ закрыт на уровне браузера т.к. это уязвимость

Нажмите, чтобы раскрыть...

Как я получил тогда? Если сайт во фрейме другой то да, хрен

ggbb

Пользователь

Регистрация: 04.11.2011

Сообщения: 2125

Рейтинг: 1563

ggbb

Регистрация: 04.11.2011

Сообщения: 2125

Рейтинг: 1563

S30N1K сказал(а):

Ну так кликай прогамно по этому полю

чо за сайт?

Нажмите, чтобы раскрыть...

Битрикс24

Программно это как? trigger click на это поле не работает вроде

Rinse сказал(а):

Ты никак не можешь получить к фрейму доступ с js. Доступ закрыт на уровне браузера т.к. это уязвимость

Нажмите, чтобы раскрыть...

Речь идет лишь об инициализации, должен же быть какой то ивент, с которого ajax подгружает iframe и который можно провернуть через js/jquery

saw_tooth

Пользователь

Регистрация: 20.08.2013

Сообщения: 5550

Рейтинг: 3286

saw_tooth

Регистрация: 20.08.2013

Сообщения: 5550

Рейтинг: 3286

Rinse сказал(а):

Ты никак не можешь получить к фрейму доступ с js. Доступ закрыт на уровне браузера т.к. это уязвимость

Нажмите, чтобы раскрыть...

Еще как можешь, не надо врать.

Для этого достаточно найти коренной элемент iframe и сделать его текущим в контексте (в вебдрайверах это делают подменой root элемента, а на странице можно сделать через contentWindow.document)

 

Просто ТС наверно не знает, что iframe для js-са видится как отдельное окно браузера.

Убедится в этом легко.

https://www.w3schools.com/html/html_iframe.asp

Открываем консоль, вкладка Elements. Ищем имя класса топ-окна через ctrl-f 

w3-container top - будет 2 совпадения, одно на странице, другое в iframe.

Открываем консоль на вкладке Console, пишем:

$('div.w3-container.top')

и видим что элемент один (если бы их несколько было, вернулся бы массив)

 

Ronan

Пользователь

Регистрация: 12.06.2012

Сообщения: 579

Рейтинг: 17

Нарушения: 100

Ronan

Регистрация: 12.06.2012

Сообщения: 579

Рейтинг: 17

Нарушения: 100

ggbb сказал(а):

Речь идет лишь об инициализации, должен же быть какой то ивент, с которого ajax подгружает iframe и который можно провернуть через js/jquery

Нажмите, чтобы раскрыть...

А в чем проблема посмотреть какие ивенты висят на клик по элементу который "инициализирует" твой ифрейм и запускать этот код самому?