Определить, когда автозаполнение происходит через расширение Chrome - PullRequest
1 голос
/ 23 августа 2011

Когда пользователь создает учетную запись на определенных сайтах, иногда требуется базовая информация пользователя, такая как имя, адрес электронной почты и местоположение.Chrome имеет возможность автозаполнения этой формы, если пользователь ранее ввел свою информацию.

Мой вопрос: возможно ли определить / определить, может ли страница, которую посещает пользователь, быть автоматически заполненной?

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

Ответы [ 3 ]

1 голос
/ 23 августа 2011

хорошо, вы можете проверить, изменилось ли значение по умолчанию value="VALUE", то есть:

if (getElementById('inputID').value != 'VALUE') { // DO SOMETHING }

или

проверить, изменилось ли значение:

input type="text" onchange="alert('changed')">

один из этих двух должен помочь вам (я надеюсь :))

1 голос
/ 23 августа 2011

Что именно вы хотите?Очевидно, что каждая форма МОЖЕТ быть заполнена автоматически, поэтому ответ на вопрос в вашем тексте ДА.

Вопрос в вашем заголовке сильно отличается - БЫЛА ли форма заполнена автоматически?

Существует довольно хорошее приближение: если вы проверяете при загрузке, есть ли в форме какие-либо значения (которые отличаются от отправленных вами), и есть, пользователь, очевидно, не мог заполнить их вручную.Итак, вы знаете, что автозаполнение произошло.

С другой стороны, это звучит почти так, как будто вы ищете общее решение не для своего сайта, а для расширения браузера, которое вы сами хотите написать?В этом случае решение остается тем же, сразу же при загрузке страницы посмотрите значения, которые предоставляет страница, и посмотрите, отличаются ли они на самом деле.Я не совсем уверен, но событие onload должно быть в порядке, я думаю, автозаполнения не происходит до загрузки страницы.Может быть, вам даже нужно добавить несколько сотен миллисекунд поверх события onload.В любом случае, пользователь не может набрать много букв менее чем за секунду или установить флажки и т. Д., Поэтому это все еще очень хорошая догадка.БОЛЬШЕ смущен тем, чего именно вы хотите достичь - но поскольку Дуглас Адамс не был первым, кто пытался научить нас, часто проблема заключается не в ответе, а в самом вопросе:)

0 голосов
/ 14 марта 2012

Вы можете использовать

document.querySelectorAll('*:-webkit-autofill');

для автоматического заполнения всех элементов.

Тогда вам просто нужно проверить, есть ли какие-либо новые элементы в цикле.

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