Autel MaxiIM KM100 IMMO Key Programmer

Autel MaxiIM KM100 IMMO Key Programmer

$449.95

.rte .video-wrapper{ margin-bottom: 0px; margin-top: 0px; } const THE_IFRAME_SELECTOR = 'iframe[id^="ytplayer"]'; // matches all iframes with an id that starts with h5p-embed-responsive-item const THE_VIDEO_SELECTOR = 'embed-responsive-item'; // since all videos appear to have the same class you don't need to change this waitForMultipleElements(document, THE_IFRAME_SELECTOR, () => { let ALL_IFRAMES = document.querySelectorAll(THE_IFRAME_SELECTOR); ALL_IFRAMES.forEach(FOUND_IFRAME => { let FOUND_IFRAME_SELECTOR = `#${FOUND_IFRAME.id}`; console.log("FOUND_IFRAME_SELECTOR:", FOUND_IFRAME_SELECTOR) waitForElement(document, FOUND_IFRAME_SELECTOR, () => { waitForVideoElement(FOUND_IFRAME_SELECTOR, THE_VIDEO_SELECTOR, () => { initPageVisibleApi(FOUND_IFRAME_SELECTOR, THE_VIDEO_SELECTOR); }); }); }); }); function waitForMultipleElements(parentEl, selector, callback) { let theInterval = setInterval(() => { console.log('still waiting for all elements: ' + selector); let elements = parentEl.querySelectorAll(selector); if (elements.length) { console.log("elements: " + selector + " exist!"); clearInterval(theInterval); callback(); } }, 1000); } function waitForVideoElement(iframeSelector, videoElementSelector, callback) { let theIframeElement = document.querySelector(iframeSelector); let iframeEl = theIframeElement.contentWindow.document; waitForElement(iframeEl, videoElementSelector, () => { callback() }); } function waitForElement(parentEl, selectorOfElementToWaitFor, callback) { let theInterval = setInterval(() => { console.log("still waiting for " + selectorOfElementToWaitFor); let element = parentEl.querySelector(selectorOfElementToWaitFor); if (element) { console.log(selectorOfElementToWaitFor + " exists!"); clearInterval(theInterval); callback(); } }, 100); } function initPageVisibleApi(iframeSelector, videoSelector) { // This is the same code that builds out the Page Visible API // event listeners. // The only difference is I wrapped it in a function and added // parameters to make it flexible. const iframe = document.querySelector(iframeSelector); const innerDoc = (iframe.contentDocument) ? iframe.contentDocument : iframe.contentWindow.document; const videoElement = innerDoc.querySelector(videoSelector); // Set the name of the hidden property and the change event for visibility var hidden, visibilityChange; if (typeof document.hidden !== "undefined") { // Opera 12.10 and Firefox 18 and later support hidden = "hidden"; visibilityChange = "visibilitychange"; } else if (typeof document.msHidden !== "undefined") { hidden = "msHidden"; visibilityChange = "msvisibilitychange"; } else if (typeof document.webkitHidden !== "undefined") { hidden = "webkitHidden"; visibilityChange = "webkitvisibilitychange"; } // To tell if video has been played yet or not let VIDEO_HAS_BEEN_PLAYED = false; // If the page is hidden, pause the video; // if the page is shown, play the video function handleVisibilityChange() { if (VIDEO_HAS_BEEN_PLAYED) { if (document[hidden]) { videoElement.pause(); } else { videoElement.play(); } } } // Warn if the browser doesn't support addEventListener or the Page Visibility API if (typeof document.addEventListener === "undefined" || hidden === undefined) { alert("This demo requires a browser, such as Google Chrome or Firefox, that supports the Page Visibility API."); } else { // Handle page visibility change document.addEventListener(visibilityChange, handleVisibilityChange, false); // When the video pauses, set the title. // This shows the paused const defaultTitle = document.title; videoElement.addEventListener("pause", function () { document.title = 'Paused - ' + defaultTitle; }, false); // When the video plays, set the title. videoElement.addEventListener("play", function () { VIDEO_HAS_BEEN_PLAYED = true; document.title = 'Playing - ' + defaultTitle; }, false); } } Autel’s MaxilM KM100 is a key programmer powered by Android, capable of both IMMOlearning and key creation. Comprising a smart 5.5 inch touchscreen, it’s simple and easy touse, with incredibly clear graphics. With seamless Bluetooth connection, VCI uses the AutelIKEY, a universal programmable smart key for effortless key replacement. It supports over700 vehicles, offering limitless potential. IMMO programming is possible for several carbrands, including Honda, Volkswagen, BMW, Toyota, and General Motors. It’s clear that thiskey programmer is a staple in any auto locksmiths tool kit. .tg-8a48:first-child, .tg tr > .tg-wp8o:first-child { min-width: 196px; position: -webkit-sticky; position: sticky; left: 0; z-index: 2; border-right: 1px solid #000; } .tg thead tr > .tg-wp8o:first-child { z-index: 4; } --> Key Programming AbilitiesMobile Devices Without Yearly Subscription KEY TOOLPLUS KEY TOOLMAX PRO XhorseMINI-OBD AUTELKM100 KeyDIYKD-MATE Full VVDI2 Coverage ✔ VW Audi Group up to Gen3.5 ✔ ✔ ✔ ✔ BMW CAS1~CAS3++ by OBD ✔ ✔ ✔ Alfa Buick Cadillac Chery Chevrolet Chrysler Citroen/DS Dodge Ferrari Fiat Ford Great Wall/Wey Genesis Geo GMC Honda Hummer Hyundai Infiniti Isuzu Iveco Jac Kia Lancia Jeep GMC Lexus Lynk&Co Maserati Maxus Mazda MG Mitsubishi Nissan Opel Peugeot Pontiac Renault Seres Saab Saic Ssangyong Subaru Suzuki Toyota and more ✔ ✔ ✔ ✔ Audi Gen4 Volkswagen Gen4~5 BYD Honda Nissan Infinity Toyota Lexus More OTW Volvo -2018 (No Disassembly) ✔ ✔ ✔ ✔ RFA Change-Rover/Jag 15-18 ✔ ✔ ✔ Bypass Ford AKL w/Alarm Adapter Adapter GBOX 20+ CAN-FD GM-PIN Needed ✔ ✔ Smart Toyota/Lexus 19+ PIN-Free Programming w/Adapter XD8A BA OBD Only GBOX BA ✔ BA Smart Toyota/Lexus 19+ New remote w/o changing # of keys XD8A ✔ BA Turn-key Toyota 14+ AKL 8A/H Adapter Adapter max+adapter gbox+cable

Show More Show Less

Price History

$430 $449.95 (+$19.95)