Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 19.08.2018, 16:31
Интересующийся
Отправить личное сообщение для lkombatl Посмотреть профиль Найти все сообщения от lkombatl
 
Регистрация: 14.12.2016
Сообщений: 11

Не видит элемент
Здравствуйте.
Пытаюсь написать юзерскрипт для одной браузерки.
Когда в консоли прописываю получить элемент по классу мне возвращает undefined, но если я чрез просмотр кода элемента найду его в коде страницы в ручную и пропишу ту же самую команду то элемент находится без проблем.
В чём может быть загвоздка? В каком направлении хотя бы гуглить?
Ответить с цитированием
  #2 (permalink)  
Старый 19.08.2018, 16:38
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,590

Всё просто: элемент появляется на странице уже после того как отработал скрипт.

Простой вариант - подождать появления:
function main(element){
  //код скрипта делающий что-то с элементом
}

(function wait(){
  var element = document.querySelector('#id');
  if(element) //если элемент найден
    return main(element); //вызываем функцию main

  setTimeout(wait, 100); //иначе ждём ещё 100ms  
}());


Сложный - вмешаться в работу функции приводящей к появлению этого элемента.
__________________
29375, 35
Ответить с цитированием
  #3 (permalink)  
Старый 19.08.2018, 16:52
Интересующийся
Отправить личное сообщение для lkombatl Посмотреть профиль Найти все сообщения от lkombatl
 
Регистрация: 14.12.2016
Сообщений: 11

Aetae
Не думаю что из-за этого.

Элемент уже появился и я в консоли прописал вручную после появления элемента но он не видит. Но когда я нажал ПКМ и просмотр кода элемента и сам так сказать вручную до нужного элемента дошёл он стал видеть.

Rise
Я не в коде скрипт выполнял, я в коде нужный элемент в ручную находил. Немного косноязычно выразился.
Ответить с цитированием
  #4 (permalink)  
Старый 19.08.2018, 16:59
Интересующийся
Отправить личное сообщение для lkombatl Посмотреть профиль Найти все сообщения от lkombatl
 
Регистрация: 14.12.2016
Сообщений: 11

Вот примерно так


Последний раз редактировалось lkombatl, 19.08.2018 в 17:10.
Ответить с цитированием
  #5 (permalink)  
Старый 19.08.2018, 17:02
Аватар для Alexandroppolus
Профессор
Отправить личное сообщение для Alexandroppolus Посмотреть профиль Найти все сообщения от Alexandroppolus
 
Регистрация: 25.10.2016
Сообщений: 1,012

Сообщение от lkombatl
получить элемент по классу
селектор правильный ты сотворил, чтоб элемент промыслить?

----
элемент точно не в ифрейме?
Ответить с цитированием
  #6 (permalink)  
Старый 19.08.2018, 17:05
Аватар для Alexandroppolus
Профессор
Отправить личное сообщение для Alexandroppolus Посмотреть профиль Найти все сообщения от Alexandroppolus
 
Регистрация: 25.10.2016
Сообщений: 1,012

Сообщение от lkombatl
document.getElementsByClassName(...)[16]
может, таких меньше 17, вот и undefined
Ответить с цитированием
  #7 (permalink)  
Старый 19.08.2018, 17:16
Интересующийся
Отправить личное сообщение для lkombatl Посмотреть профиль Найти все сообщения от lkombatl
 
Регистрация: 14.12.2016
Сообщений: 11

Alexandroppolus
В 1 картинке до просмотра кода в ручную и после.
и после просмотри находит таки 17 элемент хотя ни каких действия на экране я не совершал.
До просмотра кода даже 0 элемент не находит.

элемент точно не в ифрейме?
Сейчас проверил, да в iframe.
Что такое не знаю, но сейчас буду гуглить, может в нём дело.
Ответить с цитированием
  #8 (permalink)  
Старый 19.08.2018, 17:23
Аватар для Alexandroppolus
Профессор
Отправить личное сообщение для Alexandroppolus Посмотреть профиль Найти все сообщения от Alexandroppolus
 
Регистрация: 25.10.2016
Сообщений: 1,012

Сообщение от lkombatl
Сейчас проверил, да в iframe.
Что такое не знаю, но сейчас буду гуглить, может в нём дело.
это "страница внутри страницы", практически автономная (только window.parent ссылается на родительское окно). Там свой document, и т.д.
посмотри какой url у фрейма, натрави юзерскрипт на этот url, и он запустится внутри фрейма, будет там работать.

либо, если страница и фрейм с одного домена, можно оставить юзерскрипт как есть, тогда надо будет отыскать в документе фрейм, смотреть его contentWindow.document и в нем искать. Но тут надо дождаться загрузки самого фрейма, и ещё появления в нем элемента, этот вариант мне видится более громоздким
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Скрипт не видит, что элемент с определенным id существует pashin76 jQuery 1 08.04.2017 17:02
определить элемент под перетаскиваемым элементом slavaspirit Элементы интерфейса 3 26.07.2015 01:49
Выбрать элемент у родителя которого сын это элемент по которому кликнули MalikSPB Events/DOM/Window 8 30.12.2012 12:22
Drag-n-Drop - перетянуть элемент Jugo ExtJS 1 10.08.2011 19:10
Определить, видит ли ползователь элемент Logo Общие вопросы Javascript 10 28.12.2010 14:21