Как передать данные из формы Google в Google BigQuery

Я только что обнаружил, что если у вас есть запоминающееся имя пользователя и пароль для сайта, текущая версия Chrome автоматически запустит ваше имя пользователя / адрес электронной почты в поле до любого поля type=password. Не важно, что называется полем - просто принимает поле до того, как пароль будет вашим именем пользователя.

Old Solution

Просто используйте <form autocomplete="off">, и это предотвращает предварительную загрузку пароля а также любое эвристическое заполнение полей на основе допущений, которые может сделать браузер (которые часто ошибочны). В отличие от использования <input autocomplete="off">, который, похоже, в значительной степени игнорируется автозаполнением пароля (в Chrome, который Firefox выполняет его).

Обновленное решение

Chrome теперь игнорирует <form autocomplete="off">. Поэтому мое первоначальное обходное решение (которое я удалил) теперь все в ярости.

Просто создайте пару полей и сделайте их скрытыми с помощью «display: none». Пример:

<!-- fake fields are a workaround for chrome autofill getting the wrong fields -->
<input style="display:none" type="text" name="fakeusernameremembered"/>
<input style="display:none" type="password" name="fakepasswordremembered"/>

Затем поместите свои реальные поля внизу.

Не забудьте добавить комментарий или другие люди в вашей команде задаться вопросом, что вы делаете!

Обновить март 2016

Просто протестирован с последним Chrome - все хорошо. Это довольно старый ответ, но я хочу просто упомянуть, что наша команда уже много лет использует его на десятках проектов. Он по-прежнему отлично работает, несмотря на несколько комментариев ниже. Нет проблем с доступностью, потому что поля display:none означают, что они не получают фокуса. Как я уже говорил, вам нужно поставить перед вашими реальными полями.

Если вы используете javascript для изменения вашей формы, вам понадобится дополнительный трюк. Покажите поддельные поля, пока вы манипулируете формой, а затем снова скройте их через миллисекунду позже.

Пример кода с использованием jQuery (если вы дадите свои поддельные поля классу):

        $(".fake-autofill-fields").show();
        // some DOM manipulation/ajax here
        window.setTimeout(function () {
            $(".fake-autofill-fields").hide();
        },1);

Обновление июля 2018 г.

Мое решение больше не работает так хорошо, Эксперты по анти-юстиции Chrome очень усердно работали. Но они бросили нам кость в виде:

<input type="password" name="whatever" autocomplete="new-password" />

Это работает и в основном решает проблему.

Однако это не работает, когда у вас нет поля пароля, но только адрес электронной почты. Это также может быть трудно заставить его перестать желтеть и предварять. Решение фальшивых полей может быть использовано для исправления этого.

На самом деле вам иногда нужно сбросить два лота поддельных полей и попробовать их в разных местах. Например, у меня уже были поддельные поля в начале моей формы, но Chrome недавно начал заполнять поле «Электронная почта» снова, поэтому я удвоил и добавил больше фальшивых полей непосредственно перед полем «Электронная почта» и исправил его , Удаление первой или второй партии полей возвращается к некорректному избыточному автозаполнению.

1
задан Ekkapob Poonsawat 28 March 2019 в 05:00
поделиться

1 ответ

Один из способов сделать это:

  1. Сохранить ответы формы Google в электронной таблице. Как связаться .

  2. Настройте внешнюю таблицу BigQuery в соответствии с Запросом таблицы Google Sheets из BigQuery .

  3. (Необязательно) Используйте CREATE TABLE ... AS SELECT , чтобы скопировать данные в BigQuery. (Может также быть запланированным запросом BigQuery).

Обратите внимание, что с 1) и 2) делается. Вам не нужна ни одна строка «кода» для подачи ответа вашей формы на BigQuery. Это просто вопрос.

0
ответ дан Yun Zhang 28 March 2019 в 05:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: