Так вот со мной произошла сумасшедшая вещь.
Я хочу добавить форму Google на веб-сайт. Мне нужно автоматически заполнить и скрыть одно из полей формы.
Вот немного HTML:
<!DOCTYPE html>
<html>
<head> </head>
<body>
<iframe
src="https://docs.google.com/forms/d/e/1FAIpQLSdisob821_bYS5Ya_r460Bn0RHYSB5xqIW6Yz-z4WPwEVjxMQ/viewform?embedded=true"
width="640"
height="734"
frameborder="0"
marginheight="0"
marginwidth="0"
>Loading...</iframe
>
</body>
</html>
Красиво и просто. Теперь, если я запускаю это в моем браузере (в настоящее время Chrome), форма отображается просто отлично Я вижу это своими глазами. Я ни в коем случае не опьянен.
Теперь в моей консоли инструментов разработчика я делаю это:
formFrame = document.querySelector("body > iframe");
formFrame.innerHTML; // the value is "Loading..."
Значит, JS считает, что мы все еще отображаем текст заполнителя? Странный.
Я действительно не хочу работать напрямую с innerHTML. То, что я хочу, больше похоже на это:
inputContainers = document.querySelectorAll("div.freebirdFormviewerViewNumberedItemContainer");
Длина должна быть 2. Это 0
Если я посмотрю на дерево html-элементов в моих инструментах разработки, то, кажется, все будет в порядке.
Я использую функцию «проверить элемент» моих инструментов разработчика просто для того, чтобы убедиться, что используемые мной селекторы верны.
Затем я снова выполняю formFrame.innerHTML
. Я получаю ошибку Uncaught ReferenceError: formFrame is not defined
. Гоша
Затем я выполняю это снова:
inputContainers = document.querySelectorAll("div.freebirdFormviewerViewNumberedItemContainer")
и возвращает два элемента.
Как добраться до точки
Я предполагаю, что мое возмущение функциональностью «проверить элемент» моих инструментов разработчика вызвало событие, которое привело к правильному заполнению dom. Как мне сделать это из моего кода?
Я очень обеспокоен тем, что могу нанести удар по какой-либо функции безопасности, и я не смогу использовать формы Google в своем приложении.
Любая помощь или понимание будут оценены!