как получить iframe innerHTML для представления того, что на самом деле видно на странице? - PullRequest
0 голосов
/ 26 апреля 2019

Так вот со мной произошла сумасшедшая вещь.

Я хочу добавить форму 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 в своем приложении.

Любая помощь или понимание будут оценены!

1 Ответ

0 голосов
/ 31 мая 2019

Оказывается, это невозможно.Это функция безопасности

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...