{"id":2081,"date":"2024-10-03T11:28:25","date_gmt":"2024-10-03T09:28:25","guid":{"rendered":"https:\/\/www.xbb.se\/?page_id=2081"},"modified":"2026-09-16T15:23:15","modified_gmt":"2026-09-16T13:23:15","slug":"compatible-cars","status":"publish","type":"page","link":"https:\/\/www.xbb.se\/sv_se\/compatible-cars\/","title":{"rendered":"Kompatibla bilmodeller (Recept)"},"content":{"rendered":"\n<p><strong>OBS! <\/strong>Om din bils utrustning som ex. belysning, v\u00e4xell\u00e5da, facelift etc. skiljer sig mot beskrivningen i receptet beh\u00f6ver man testa med en XBB Dongle\u00ae f\u00f6r att vara s\u00e4ker p\u00e5 att alla signaler fungerar.<br><\/p>\n\n\n\n<p><strong>OBS! <\/strong>Fordonsspecifika programuppdateringar kan resultera i att vissa recept inte fungerar. Det \u00e4r utanf\u00f6r v\u00e5r kontroll men vi arbetar kontinuerligt med att h\u00e5lla v\u00e5ra recept uppdaterade! Aktuella recept uppdateras automatiskt fr\u00e5n v\u00e5r databas. Vi arbetar ocks\u00e5 kontinuerligt med att l\u00e4gga till fler fordon i v\u00e5r databas. <a href=\"https:\/\/www.xbb.se\/sv_se\/faq\/#efaq-min-bil-ar-inte-med-i-receptlistan-fungerar-den-anda\" target=\"_blank\" rel=\"noreferrer noopener\">\u00c4r du os\u00e4ker kolla i v\u00e5ran FAQ.<\/a><\/p>\n\n\n\n<style>\n\/* Receptlistan bar egen CSS. Inget Bootstrap laddas har: den tidigare\n   Bootstrap 5-filen var global och slog ut temats meny och den svarta\n   topplisten. Samtliga regler ar bundna till #xbbRecept och egna klassnamn. *\/\n#xbbRecept{max-width:1100px;margin:24px auto;padding:0 12px;box-sizing:border-box}\n#xbbRecept *{box-sizing:border-box}\n#xbbRecept .xbb-rubrik{text-align:center;margin:0 0 6px 0}\n#xbbRecept .xbb-ingress{text-align:center;margin:0 0 18px 0;font-size:15px;color:#4b5563}\n#xbbRecept .xbb-sokrad{display:flex;gap:8px;margin:0 0 18px 0}\n#xbbRecept .xbb-sok{flex:1 1 auto;padding:10px 12px;font-size:15px;line-height:1.3;border:1px solid #cbd5e1;border-radius:6px;background:#fff;color:#111}\n#xbbRecept .xbb-sok:focus{outline:2px solid #2563eb;outline-offset:1px}\n#xbbRecept .xbb-rensa{flex:0 0 auto;padding:10px 16px;font-size:16px;line-height:1.3;border:1px solid #cbd5e1;border-radius:6px;background:#f8fafc;color:#334155;cursor:pointer}\n#xbbRecept .xbb-rensa:hover{background:#e2e8f0}\n#xbbRecept .xbb-lista{border:1px solid #e2e8f0;border-radius:8px;overflow:hidden;background:#fff}\n#xbbRecept .xbb-post{border-top:1px solid #e2e8f0}\n#xbbRecept .xbb-lista > .xbb-post:first-child{border-top:0}\n#xbbRecept .xbb-knapp{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;width:100%;margin:0;padding:12px 14px;border:0;background:#fff;color:#111;text-align:left;cursor:pointer;font-family:inherit;font-size:15px !important;font-weight:600;line-height:1.35;border-radius:0}\n#xbbRecept .xbb-knapp:hover{background:#f1f5f9}\n#xbbRecept .xbb-knapp:focus{outline:2px solid #2563eb;outline-offset:-2px}\n#xbbRecept .xbb-pil{flex:0 0 auto;width:12px;color:#64748b;transition:transform .15s ease}\n#xbbRecept .xbb-knapp.xbb-oppen .xbb-pil{transform:rotate(90deg)}\n\/* Pa smal skarm tar titeln hela raden och antalet faller ned under den.\n   Delar de raden blir ett langt receptnamn fyra rader i stallet for tva. *\/\n#xbbRecept .xbb-titel{flex:1 1 calc(100% - 22px);min-width:0;overflow-wrap:break-word}\n@media (min-width:768px){#xbbRecept .xbb-titel{flex:1 1 auto}}\n#xbbRecept .xbb-antal{margin-left:22px}\n@media (min-width:768px){#xbbRecept .xbb-antal{margin-left:0}}\n#xbbRecept .xbb-antal{flex:0 0 auto;padding:2px 9px;border-radius:999px;background:#e2e8f0;color:#334155;font-size:12px !important;font-weight:600}\n#xbbRecept .xbb-panel{display:none;padding:0 0 0 18px;background:#fafafa}\n#xbbRecept .xbb-panel.xbb-visa{display:block}\n#xbbRecept .xbb-marke > .xbb-knapp{font-size:16px !important;font-weight:700}\n#xbbRecept .xbb-modell > .xbb-knapp{font-size:14px !important}\n#xbbRecept .xbb-recept > .xbb-knapp{font-size:15px !important;font-weight:700 !important;line-height:1.3}\n#xbbRecept .xbb-kropp{padding:12px 14px 16px 14px}\n#xbbRecept .xbb-beskrivning{font-size:15px !important;line-height:1.55;margin:0 0 14px 0;color:#1f2937}\n#xbbRecept .xbb-signaler-rubrik{font-size:12px !important;text-transform:uppercase;letter-spacing:.04em;color:#6b7280;margin:0 0 6px 0}\n#xbbRecept .xbb-signaler{margin:0;padding-left:20px;font-size:13px !important;line-height:1.5}\n#xbbRecept .xbb-signaler li{font-family:inherit;margin:0 0 2px 0}\n\/* Storlekarna vaxer forst nar skarmen racker till. Pa telefon blev ett\n   receptnamn pa 19 px fyra rader. *\/\n@media (min-width:768px){\n  #xbbRecept .xbb-signaler{column-count:2;column-gap:32px}\n  #xbbRecept .xbb-marke > .xbb-knapp{font-size:18px !important}\n  #xbbRecept .xbb-modell > .xbb-knapp{font-size:15px !important}\n  #xbbRecept .xbb-recept > .xbb-knapp{font-size:17px !important}\n  #xbbRecept .xbb-beskrivning{font-size:16px !important}\n  #xbbRecept .xbb-signaler{font-size:14px !important}\n}\n#xbbRecept .xbb-status{text-align:center;margin:24px 0;color:#4b5563}\n#xbbRecept .xbb-fel{color:#b91c1c}\n<\/style>\n\n<div id=\"xbbRecept\">\n  <h3 class=\"xbb-rubrik\">Kompatibla bilmodeller (nya modeller tillkommer l\u00f6pande)<\/h3>\n  <p class=\"xbb-ingress\">S\u00f6k p\u00e5 m\u00e4rke, modell, recept eller signal. Klicka dig fram till receptet f\u00f6r att se signalerna.<\/p>\n  <div class=\"xbb-sokrad\">\n    <input type=\"text\" id=\"xbbSok\" class=\"xbb-sok\" placeholder=\"S\u00f6k...\">\n    <button id=\"xbbRensa\" class=\"xbb-rensa\" type=\"button\" aria-label=\"Rensa s\u00f6kningen\">&times;<\/button>\n  <\/div>\n  <div id=\"xbbStatus\" class=\"xbb-status\"><p>H\u00e4mtar receptlistan&#8230;<\/p><\/div>\n  <div id=\"xbbLista\" class=\"xbb-lista\"><\/div>\n<\/div>\n\n<script>\n(function(){\n  var API = \"https:\/\/xbbcustomer.innowareapi.com\/xbb\";\n  \/\/ PP-CAN visas, beslut KHS 2026-09-16. Kvar dolda ar testrecepten och ett\n  \/\/ marke som inte hor till XBB-sortimentet.\n  var HOPPA_OVER = [\"4Light Biker\", \"Test recipes\"];\n  var allData = [];\n\n  \/\/ Texterna ritas av skriptet och nas darfor inte av TranslatePress, som bara\n  \/\/ oversatter det servern levererar. Sprakvalet lases av sidans lang-attribut,\n  \/\/ sv_se ger svenska och en ger engelska.\n  var SPRAK = (document.documentElement.getAttribute(\"lang\") || \"\").toLowerCase().indexOf(\"en\") === 0\n    || location.pathname.indexOf(\"\/en\/\") === 0 ? \"en\" : \"sv\";\n  var T = {\n    sv: { rubrik: \"Kompatibla bilmodeller (nya modeller tillkommer l\u00f6pande)\",\n          ingress: \"S\u00f6k p\u00e5 m\u00e4rke, modell, recept eller signal. Klicka dig fram till receptet f\u00f6r att se signalerna.\",\n          sok: \"S\u00f6k...\", rensa: \"Rensa s\u00f6kningen\", hamtar: \"H\u00e4mtar receptlistan...\",\n          signalrubrik: \"Signaler i receptets ordning\", signaler: \"signaler\",\n          ingentraff: \"Ingen tr\u00e4ff.\", fel: \"Kunde inte h\u00e4mta receptlistan. F\u00f6rs\u00f6k igen senare.\" },\n    en: { rubrik: \"Compatible car models (new models are added continuously)\",\n          ingress: \"Search by make, model, recipe or signal. Open a recipe to see its signals.\",\n          sok: \"Search...\", rensa: \"Clear the search\", hamtar: \"Loading the recipe list...\",\n          signalrubrik: \"Signals in recipe order\", signaler: \"signals\",\n          ingentraff: \"No matches.\", fel: \"The recipe list could not be loaded. Please try again later.\" }\n  }[SPRAK];\n\n  function esc(t){ return String(t == null ? \"\" : t).replace(\/[&<>\"]\/g, function(c){\n    return {\"&\":\"&amp;\",\"<\":\"&lt;\",\">\":\"&gt;\",\"\\\"\":\"&quot;\"}[c]; }); }\n\n  \/\/ Signalerna visas i receptets indexordning. API:et levererar dem osorterade,\n  \/\/ index ar heltal och HIGHBEAM ar normalt 0. Saknat index hamnar sist.\n  function sorteraSignaler(signaler){\n    return (signaler || []).slice().sort(function(a, b){\n      var x = Number.isFinite(+a.index) ? +a.index : 1e9,\n          y = Number.isFinite(+b.index) ? +b.index : 1e9;\n      if (x !== y) return x - y;\n      return String(a.name).localeCompare(String(b.name));\n    });\n  }\n\n  function filtrera(data, sok){\n    if (!sok) return data;\n    var s = sok.toLowerCase();\n    var ut = [];\n    data.forEach(function(marke){\n      var markeTraff = String(marke.brand).toLowerCase().indexOf(s) > -1;\n      var modeller = [];\n      (marke.models || []).forEach(function(modell){\n        var modellTraff = String(modell.model_name).toLowerCase().indexOf(s) > -1;\n        var recept = [];\n        (modell.recipes || []).forEach(function(r){\n          var receptTraff = String(r.name).toLowerCase().indexOf(s) > -1\n            || String(r.description || \"\").toLowerCase().indexOf(s) > -1\n            || (r.signals || []).some(function(sig){ return String(sig.name).toLowerCase().indexOf(s) > -1; });\n          if (markeTraff || modellTraff || receptTraff) recept.push(r);\n        });\n        if (recept.length) modeller.push(Object.assign({}, modell, {recipes: recept}));\n      });\n      if (modeller.length) ut.push(Object.assign({}, marke, {models: modeller}));\n    });\n    return ut;\n  }\n\n  function post(klass, id, titel, antal, innehall){\n    return '<div class=\"xbb-post ' + klass + '\">' +\n        '<button class=\"xbb-knapp\" type=\"button\" aria-expanded=\"false\" aria-controls=\"' + id + '\" data-xbb-mal=\"' + id + '\">' +\n          '<span class=\"xbb-pil\" aria-hidden=\"true\">&#9656;<\/span>' +\n          '<span class=\"xbb-titel\">' + titel + '<\/span>' +\n          (antal === null ? '' : '<span class=\"xbb-antal\">' + antal + '<\/span>') +\n        '<\/button>' +\n        '<div class=\"xbb-panel\" id=\"' + id + '\">' + innehall + '<\/div>' +\n      '<\/div>';\n  }\n\n  function rita(sok){\n    var data = filtrera(allData, sok).slice().sort(function(a, b){\n      return String(a.brand).localeCompare(String(b.brand)); });\n    var h = \"\";\n    data.forEach(function(marke, mi){\n      var markeId = \"xbb-marke-\" + mi;\n      var modeller = (marke.models || []).slice().sort(function(a, b){\n        return String(a.model_name).localeCompare(String(b.model_name)); });\n      var innerModeller = \"\";\n      modeller.forEach(function(modell, di){\n        var modellId = markeId + \"-modell-\" + di;\n        var recept = (modell.recipes || []).slice().sort(function(a, b){\n          return String(a.name).localeCompare(String(b.name)); });\n        var innerRecept = \"\";\n        recept.forEach(function(r, ri){\n          var receptId = modellId + \"-recept-\" + ri;\n          var signaler = sorteraSignaler(r.signals).map(function(sig){\n            return \"<li>\" + esc(sig.name) + \"<\/li>\"; }).join(\"\");\n          var kropp = '<div class=\"xbb-kropp\">' +\n            (r.description ? '<p class=\"xbb-beskrivning\">' + esc(r.description) + '<\/p>' : '') +\n            '<p class=\"xbb-signaler-rubrik\">' + T.signalrubrik + '<\/p>' +\n            '<ul class=\"xbb-signaler\">' + signaler + '<\/ul>' +\n            '<\/div>';\n          innerRecept += post(\"xbb-recept\", receptId, esc(r.name), (r.signals || []).length + \" \" + T.signaler, kropp);\n        });\n        innerModeller += post(\"xbb-modell\", modellId, esc(modell.model_name), recept.length, '<div class=\"xbb-lista\">' + innerRecept + '<\/div>');\n      });\n      h += post(\"xbb-marke\", markeId, esc(marke.brand), null, '<div class=\"xbb-lista\">' + innerModeller + '<\/div>');\n    });\n    document.getElementById(\"xbbLista\").innerHTML = h || '<p class=\"xbb-status\">' + T.ingentraff + '<\/p>';\n  }\n\n  \/\/ Egen oppning och stangning. Inget Bootstrap-beroende, och flera paneler far\n  \/\/ vara oppna samtidigt sa att recept gar att jamfora mellan marken och modeller.\n  document.addEventListener(\"click\", function(e){\n    var knapp = e.target.closest ? e.target.closest(\"#xbbRecept .xbb-knapp\") : null;\n    if (!knapp) return;\n    e.preventDefault();\n    e.stopPropagation();\n    var mal = document.getElementById(knapp.getAttribute(\"data-xbb-mal\"));\n    if (!mal) return;\n    var oppen = mal.classList.toggle(\"xbb-visa\");\n    knapp.classList.toggle(\"xbb-oppen\", oppen);\n    knapp.setAttribute(\"aria-expanded\", oppen ? \"true\" : \"false\");\n  }, true);\n\n  function start(){\n    document.querySelector(\"#xbbRecept .xbb-rubrik\").textContent = T.rubrik;\n    document.querySelector(\"#xbbRecept .xbb-ingress\").textContent = T.ingress;\n    document.querySelector(\"#xbbStatus p\").textContent = T.hamtar;\n    var sok = document.getElementById(\"xbbSok\");\n    var rensa = document.getElementById(\"xbbRensa\");\n    if (sok) sok.setAttribute(\"placeholder\", T.sok);\n    if (rensa) rensa.setAttribute(\"aria-label\", T.rensa);\n    if (sok) sok.addEventListener(\"input\", function(){ rita(sok.value.trim()); });\n    if (rensa) rensa.addEventListener(\"click\", function(){ sok.value = \"\"; rita(\"\"); sok.focus(); });\n\n    fetch(API).then(function(r){ return r.json(); }).then(function(svar){\n      allData = (svar.data || []).filter(function(m){ return HOPPA_OVER.indexOf(m.brand) === -1; });\n      rita(\"\");\n      var l = document.getElementById(\"xbbStatus\");\n      if (l) l.style.display = \"none\";\n    }).catch(function(){\n      var l = document.getElementById(\"xbbStatus\");\n      if (l) l.innerHTML = '<p class=\"xbb-fel\">' + T.fel + '<\/p>';\n    });\n  }\n\n  if (document.readyState === \"loading\") document.addEventListener(\"DOMContentLoaded\", start);\n  else start();\n})();\n<\/script>\n\n\n\n<p class=\"has-text-align-center\"><br>Receptlistan finns ocks\u00e5 som egen sida: <a href=\"https:\/\/www.xbb.se\/xbbTable\/bilmodeller.php\" target=\"_blank\" rel=\"noreferrer noopener\">Kompatibla bilmodeller (Recept)<\/a><\/p>\n\n","protected":false},"excerpt":{"rendered":"<p>OBS! Om din bils utrustning som ex. belysning, v\u00e4xell\u00e5da, facelift etc. skiljer sig mot beskrivningen i receptet beh\u00f6ver man testa med en XBB Dongle\u00ae f\u00f6r att vara s\u00e4ker p\u00e5 att alla signaler fungerar. OBS! Fordonsspecifika programuppdateringar kan resultera i att vissa recept inte fungerar. Det \u00e4r utanf\u00f6r v\u00e5r kontroll men vi arbetar kontinuerligt med att [&hellip;]<\/p>\n","protected":false},"author":4,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-2081","page","type-page","status-publish","hentry"],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.xbb.se\/sv_se\/wp-json\/wp\/v2\/pages\/2081","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.xbb.se\/sv_se\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.xbb.se\/sv_se\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.xbb.se\/sv_se\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/www.xbb.se\/sv_se\/wp-json\/wp\/v2\/comments?post=2081"}],"version-history":[{"count":22,"href":"https:\/\/www.xbb.se\/sv_se\/wp-json\/wp\/v2\/pages\/2081\/revisions"}],"predecessor-version":[{"id":3142,"href":"https:\/\/www.xbb.se\/sv_se\/wp-json\/wp\/v2\/pages\/2081\/revisions\/3142"}],"wp:attachment":[{"href":"https:\/\/www.xbb.se\/sv_se\/wp-json\/wp\/v2\/media?parent=2081"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.xbb.se\/sv_se\/wp-json\/wp\/v2\/categories?post=2081"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.xbb.se\/sv_se\/wp-json\/wp\/v2\/tags?post=2081"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}