JavaScript 如何检测浏览器自动填充

JavaScript 如何检测浏览器自动填充

我们将学习如何使用JavaScript检测浏览器的自动填充功能。在这里,我们将使用三种编程语言HTML、CSS和Jquery来以最佳和明确定义的方式解决这个问题。在所有的Web浏览器中,自动填充是一种自动填充表单字段(如电子邮件、地址、密码等)的功能,用户需要在浏览器中启用此功能才能使用。

自动完成与自动填充有更多关联: 在讨论这些点之前,假设您对HTML中的表单标签很了解。该标签提供了一个名为auto-complete的属性,如果我们将该属性的值设置为on,则表示默认为on,浏览器可以自由地存储提交的值并在表单字段中自动填充。

自动填充字段名称告诉浏览器字段期望的信息类型。让我们通过看一个示例来理解这个。

在这个示例中,我们将采用一个文本框,用于输入电子邮件地址。如果我们选择框下方显示的任何电子邮件,它将替换文本的值。

<html>
  <head>
    <!-- Latest compiled and minified CSS -->
    <link href=
"https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta2/dist/css/bootstrap.min.css"
      rel="stylesheet"
      integrity=
"sha384-BmbxuPwQa2lc/FVzBcNJ7UAyJxM6wuqIj61tLrc4wSX0szH/Ev+nYRRuWlolflfl"
      crossorigin="anonymous"/>
    <script src=
"https://cdn.jsdelivr.net/npm/@popperjs/core@2.6.0/dist/umd/popper.min.js"
      integrity=
"sha384-KsvD1yqQ1/1+IA7gi3P0tyJcT3vR+NdBTt13hSJ2lnve8agRGXTTyNaBYmCR/Nwi"
      crossorigin="anonymous">
         
    </script>
    <script src=
"https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta2/dist/js/bootstrap.min.js"
      integrity=
"sha384-nsg8ua9HAw1y0W1btsyWgBklPnCUAFLuTMS2G72MMONqmOymq585AcH49TLBQObG"
      crossorigin="anonymous">
         
  </script>
  </head>
 
  <body>
    <div class="container">
      <div
        style="
          font-weight: 600px;
          color: green;
          font-size: 20px;
          text-align: center;">
        GeeksforGeeks
      </div>
      <label for="email">Email</label>
      <input
        type="text"
        id="email"
        placeholder="gmail"
        style="margin-top: 20px"
        name="email"/>
    </div>
  </body>
</html>

JavaScript 如何检测浏览器自动填充

在这种方法中,我们将使用Jquery方法以及简单的JavaScript来完成这个示例项目。在这个示例中,我们使用一个文本框来输入电子邮件地址。在尝试这个示例之前,请确保您的浏览器支持自动填充功能,并且已由您启用。

步骤:

  • 当在表单字段中自动填充任何内容时,您可能会看到浏览器将背景颜色更改为另一种颜色。这是我们检测自动填充的关键事件。
  • 在这个示例中,我们将使用一个名为blur和input的jquery事件来检测自动填充。
  • 当元素失去焦点时,会发生blur事件,当您在输入框中输入一些字母时,会发生input事件。
$('#email').on('blur input', function() {
   //do something<
});
  • 最初我们为输入字段分配一个颜色,即gold(我们可以选择任何颜色,这里选择了gold)。如果输入字段的颜色发生变化,则会触发上述的jquery事件。
  • 在这个函数内部,我们将检查背景状态是否发生了变化,如果有变化,则会显示警告信息。
<html>
  <head>
    <!-- Latest compiled and minified CSS -->
    <link href=
"https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta2/dist/css/bootstrap.min.css"
      rel="stylesheet"
      integrity=
"sha384-BmbxuPwQa2lc/FVzBcNJ7UAyJxM6wuqIj61tLrc4wSX0szH/Ev+nYRRuWlolflfl"
      crossorigin="anonymous"/>
    <script src=
"https://cdn.jsdelivr.net/npm/@popperjs/core@2.6.0/dist/umd/popper.min.js"
      integrity=
"sha384-KsvD1yqQ1/1+IA7gi3P0tyJcT3vR+NdBTt13hSJ2lnve8agRGXTTyNaBYmCR/Nwi"
      crossorigin="anonymous">
         
    </script>
    <script src=
"https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta2/dist/js/bootstrap.min.js"
      integrity=
"sha384-nsg8ua9HAw1y0W1btsyWgBklPnCUAFLuTMS2G72MMONqmOymq585AcH49TLBQObG"
      crossorigin="anonymous">
         
    </script>
  </head>
 
  <body>
    <div class="container">
      <div
        style="
          font-weight: 600px;
          color: green;
          font-size: 20px;
          text-align: center;">
        GeeksforGeeks
      </div>
      <div
        class="alert alert-danger"
        role="alert"
        style="display: none; margin-top: 10px">
        AutoFill Detects!!!
      </div>
      <label for="email">Email:</label>
      <input
        type="text"
        id="email"
        placeholder="gmail"
        name="email"
        style="margin-top:20px;
               background-color:gold;
               margin-left:27px;"/>
    </div>
    <script src=
"https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js">
    </script>
    <script>
      // Initial colour of input field
      var inputbg = "rgb(255, 215, 0)";
       
      // Get current background color of input field
      let style = window.getComputedStyle(document.getElementById("email"));
      ("#email").on("blur input", function () {
           
        // Check if the background color matches 
        // the previous color or not
        if (style && style.backgroundColor !== inputbg) {
             
          // Show the bootstrap alert message
          (".alert").css("display", "table");
        } else {
             
          // Hide the bootstrap alert message
          $(".alert").css("display", "none");
        }
      });
    </script>
  </body>
</html>

JavaScript 如何检测浏览器自动填充

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程