anchor.diff:  <% end %>
   
   <script>
  -  // https://stackoverflow.com/a/53269990
  -  const checkElement = async selector => {
  -    while (!$(selector).length) {
  -      await new Promise( resolve =>  requestAnimationFrame(resolve) )
  -    }
  -    return selector;
  -  };
  -
     $(document).ready(function() {
  -    // wait for each of these selectors to be present, then fiddle with them to constrain Able Player features for...
  -    // embedding in the iframe
  -    checkElement('.able-captions-wrapper').then((selector) => {
  -      $(selector).removeClass('able-captions-below');
  -      $(selector).addClass('able-captions-overlay');
  -      $(selector).css({ "font-size":"100%", "background-color": "transparent", "opacity": "" });
  -    });
  -
  -    // With these two embed-unsuitable preferences menu items, removal is better than hiding and having to mess with...
  -    // classes. This way Able Player can still manage a11y items like active status, class='able-focus' and tabIndex...
  -    // on the remaining menu items, facilitating tab navigation and active styles.
  -    checkElement("#video-prefs-menu li:contains('Captions')").then((selector) => {
  -      $(selector).remove();
  -    });
  -
  -    checkElement("#video-prefs-menu li:contains('Transcript')").then((selector) => {
  -      $(selector).remove();
  -    });
  -
       setupVideoAnalytics();
     });
   
  
positive.code:   <!-- Able Player CSS -->
    <link rel="stylesheet" href="/ableplayer-4.3/build/ableplayer.min.css" type="text/css"/>
    <!-- Able Player JavaScript -->
    <script src="/ableplayer-4.3/build/ableplayer.js"></script>
  <% end %>
  
  <video id="video"
         preload="metadata"
  
negative.code:       });
      }
    }
  </script>
  