loading

Step 4: Initialize the Library

Lastly, we need to initialize the Javascript library with a test apiKey, experienceKey and businessId. We’ll set our experienceVersion to PRODUCTION and add the following <script> to the bottom of our <body>

<script>
ANSWERS.init({
  apiKey: "3517add824e992916861b76e456724d9",  //sample test experience
  experienceKey: "answers-js-docs", //sample test experience
  businessId: "3215760",  //sample test experience
  experienceVersion: "PRODUCTION",
  onReady: function () {
      // init components
      this.addComponent("SearchBar", {
      container: ".search-bar"
      });
      this.addComponent("SpellCheck", {
      container: ".spell-check"
      });
      this.addComponent("DirectAnswer", {
      container: ".direct-answer"
      });
      this.addComponent("UniversalResults", {
      container: ".universal-results"
      });
      this.addComponent("LocationBias", {
      container: ".location-bias"
      });
  }
});
</script>

This script will update our html <div>s with components from Yext. We recommend using async defer with these Yext components for performance. Adding in the following <script> at the end of the file will tell the page to load in the Answers UI after everything else is already loaded.

<script
    src="https://assets.sitescdn.net/answers/v1.10/answers.min.js"
    onload="ANSWERS.domReady(initAnswers)"
    async
    defer
></script>

Our code now looks like the following and is a functional answers experience!

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta http-equiv="X-UA-Compatible" content="ie=edge" />
    <title>Answers Test Experience</title>
    <!-- Answers CSS-->
    <link rel="stylesheet" type="text/css" href="https://assets.sitescdn.net/answers/v1.10/answers.css" />

    <!-- Answers Layout styling -->
    <style>
        .answers-layout {
            max-width: 50rem;
            margin: auto;
        }
    </style>

    <!-- Answers JS-->
    <script src="https://assets.sitescdn.net/answers/v1.10/answers.min.js"></script>

</head>

<body>
    <div class="answers-layout">
        <div class="search-bar"></div>
        <div class="spell-check"></div>
        <div class="direct-answer"></div>
        <div class="universal-results"></div>
        <div class="location-bias"></div>
    </div>
</body>

<script>
    function initAnswers() {
        ANSWERS.init({
            apiKey: "3517add824e992916861b76e456724d9",  //sample test experience
            experienceKey: "answers-js-docs", //sample test experience
            businessId: "3215760",  //sample test experience
            experienceVersion: "PRODUCTION",
            onReady: function () {
                // init components
                this.addComponent("SearchBar", {
                    container: ".search-bar"
                });
                this.addComponent("SpellCheck", {
                    container: ".spell-check"
                });
                this.addComponent("DirectAnswer", {
                    container: ".direct-answer"
                });
                this.addComponent("UniversalResults", {
                    container: ".universal-results"
                });
                this.addComponent("LocationBias", {
                    container: ".location-bias"
                });
            }
        });
    }
</script>

<script
    src="https://assets.sitescdn.net/answers/v1.10/answers.min.js"
    onload="ANSWERS.domReady(initAnswers)"
    async
    defer
></script>

</html>
Splash Loading