Webseiten-Bericht für adler-apotheke-brilon.de

adler-apotheke-brilon.de

Webseiten-Bericht für adler-apotheke-brilon.de

 Generiert am 24 Januar 2026 02:16 AM

Aktuelle Statistiken? UPDATE !

Der Wert ist 51/100

SEO Inhalte

Die Inhaltsanalyse zeigt, ob Seitentitel, Beschreibungen, Überschriften, Bilder und Textstruktur Suchmaschinen und Besuchern klare Signale geben.

Seitentitel

Adler Apotheke in Brilon

Länge : 24

Bei adler-apotheke-brilon.de wirkt der Seitentitel stimmig: 24 Zeichen sind lang genug für eine aussagekräftige Formulierung und bleiben zugleich innerhalb des empfohlenen Rahmens von 10 bis 70 Zeichen.

Seitenbeschreibung

Adler Apotheke in Brilon: Jetzt günstig und schnell einkaufen bei www.adlerapotheke-brilon.de

Länge : 93

Für adler-apotheke-brilon.de ist eine passende Meta-Beschreibung vorhanden: 93 Zeichen bieten genug Raum für den Inhalt der Seite, ohne den empfohlenen Rahmen von 70 bis 160 Zeichen zu sprengen.

Suchbegriffe

Bei adler-apotheke-brilon.de wurden keine Meta-Suchbegriffe gefunden. Das ist für moderne Suchmaschinen nicht kritisch, dennoch kann eine saubere interne Themenliste helfen, den Inhalt bewusster zu strukturieren. Bei Bedarf können Sie dieses kostenlose Werkzeug verwenden.

Og META Eigenschaften

adler-apotheke-brilon.de verwendet Open-Graph-Angaben. Dadurch können soziale Netzwerke und Messenger Titel, Beschreibung, URL und Vorschaubild kontrollierter anzeigen.

Eigenschaft Inhalt
site_name https://www.adlerapotheke-brilon.de/
type website
title Adler Apotheke in Brilon
description Adler Apotheke in Brilon: Jetzt günstig und schnell einkaufen bei www.adlerapotheke-brilon.de
image:width 200
image:height 200

Überschriften

H1 H2 H3 H4 H5 H6
1 0 8 0 0 0
  • [H1] Der Schutz Ihrer Daten ist uns wichtig!Für die ordnungsgemäße Funktion unserer Website (z.B. Navigation, Warenkorb, Kundenkonto) setzen wir so genannte Cookies ein. Darüber hinaus verwenden wir Cookies, Pixel und vergleichbare Technologien, um unsere Website an bevorzugte Verhaltensweisen anzupassen, Informationen über die Art und Weise der Nutzung unserer Website für Optimierungszwecke zu erhalten und personalisierte Werbung ausspielen zu können. Zu Werbezwecke können diese Daten auch an Dritte, wie z.B. Suchmaschinenanbieter, Social Networks oder Werbeagenturen weitergegeben werden. Weitergehende Informationen finden Sie in unserer Datenschutzerklärung.Bitte wählen Sie nachfolgend, welche Cookies gesetzt werden dürfen, und bestätigen Sie dies durch \"Auswahl bestätigen\" oder akzeptieren Sie alle Cookies durch \"Alle auswählen\": Mehr Information Technisch Notwendig: Hierbei handelt es sich um Cookies, die für die Grundfunktionen unserer Website notwendig sind (z.B. Navigation, Warenkorb, Kundenkonto), weshalb auf diese nicht verzichtet werden kann. Komfort: Diese Cookies werden genutzt um das Einkaufserlebnis noch ansprechender zu gestalten, beispielsweise für die Wiedererkennung des Besuchers oder unsere Seite an bevorzugte Verhaltensweisen (z.B. Spracheinstellung) anzupassen. Komfort-Cookies ermöglichen es uns auch auf Ihre Bedürfnisse zugeschrittene Inhalte anzuzeigen und unser Partnerprogramm zu betreiben. Statistik & Tracking: Hierüber lassen sich Informationen über die Art und Weise der Nutzung unserer Website sammeln, mit deren Hilfe wir unsere Website weiter für Sie optimieren können, den Inhalt auf unserer Website aber auch die Werbung auf Drittseiten möglichst relevant für Sie zu gestalten. Bitte beachten Sie, dass Daten hierfür teilweise an Dritte wie z.B. Google oder soziale Medien übertragen werden. Technisch erforderlich Komfort Statistik & Tracking ', txtCookieLink = 'Nur technisch notwendige Cookies', txtCheckSettings = 'Auswahl bestätigen', txtCookieAcceptAll = 'Alles akzeptieren', txtCookieAcceptNecessary = 'Nur nötige Cookies akzeptieren', showAddToCartMessage = false, trackerEnabled = false, trackerEnabledConfort = false, txtInformationPopup = '', informationPopupPage = '', informationPopupShowAlways = ''; if(windowURL.substring(0,5) == 'https'){ if(autocompleteURL.substring(0,5) != 'https'){ autocompleteURL = autocompleteURL.replace("http","https"); } } imgProgressBar = new Image(); imgProgressBar.src = "/eTheme4/layout/images/addToCartLoader.gif"; imgProgressBar.srcdef = "/eTheme4/layout/images/blank.gif"; var uploadRezeptFileUrl = 'https://www.adlerapotheke-brilon.de/uploadRezeptFile'; var uploadRezeptFileVerifyUrl = 'https://www.adlerapotheke-brilon.de/uploadRezeptFileVerify'; var uploadBarcodeScannerResultUrl = 'https://www.adlerapotheke-brilon.de/uploadBarcodeScannerResult'; var serverDate = new Date('2026/01/24 02:16:38'); cookieAgreementExpirationDays=28; var userCentricsActive = 'false'; var textAllCategories = 'Alle Kategorie'; var urlRenderMicrocart = ''; var urlRenderMyCartProductsSummary = 'https://www.adlerapotheke-brilon.de/getMyCartProductsSummary'; if (Awinta && Awinta.setVersion) { Awinta.setVersion(2); } var useEyeAbleContrast = false; document.addEventListener('DOMContentLoaded', () => { const contrastButton = document.getElementById('contrastToggle'); const shouldApplyContrast = localStorage.getItem('contrastMode') === 'true'; if (shouldApplyContrast) { document.body.classList.add('high-contrast'); contrastButton.setAttribute('aria-pressed', 'true'); } contrastButton.addEventListener('click', () => { if (window.EyeAbleAPI?.toggleContrast && useEyeAbleContrast) { EyeAbleAPI.toggleContrast(); } else { const isActive = document.body.classList.toggle('high-contrast'); contrastButton.setAttribute('aria-pressed', isActive); localStorage.setItem('contrastMode', isActive); } }); }); #contrastToggle { position: fixed; bottom: 1rem; right: 0.6rem; z-index: 9999; -webkit-appearance: none; padding: 0 6px; border: 0; background: #000; color: #fff; border-radius: 6px; border: 1px solid #fff; box-shadow: 0px 1px 7px #505050; width: 38px; height: 38px; cursor: pointer; display: flex; align-items: center; justify-content: center; } #contrastToggle svg { width: 35px; transition-duration: 0.8s; transition-property: transform; } .high-contrast #contrastToggle svg { transform: rotate(90deg); } .lnk.lnkAddToFav .items[v-cloak] , [v-cloak] { display: none !important; } Anmelden AnmeldenOderRegistrieren Melden Sie sich an Neues Kundenkonto [v-cloak] { display: none !important; } {{cartItemsCount}} Warenkorb/Kasse{{cartValue}} Warenkorb/Kasse Ihr Warenkorb enthält {{freeShipingRemainingMessage}} x{{cartProduct.quantity}} {{cartProduct.productName}} {{cartProduct.productName}} {{cartProduct.price}} Geschätzte Versandkosten: Lieferkosten: {{shipping}} Summe {{cartValue}} Der Warenkorb ist leer Warenkorb/Kasse HeaderCartAppDomain = (function (){ function cartProduct(data) { this.productName = data.productName || ''; this.productId = data.productId || ''; this.pzn = data.pzn || ''; this.price = data.price || '0.00'; this.totalPrice = data.totalPrice || '0.00'; this.quantity = data.quantity || '0'; this.imageUrl = data.imageUrl; this.index = data.index; this.permalink = data.permalink || ''; this.isAdditionalItem = data.isAdditionalItem || false; this.isPromo = data.isPromo || false; } return { CartProduct: cartProduct } })(); var myCartProductsApp = new Vue({ el: '#microCart', data: { cartProducts: [], hovering: false, cartValue: '0,00 €', cartSize: 0, cartItemsCount: 0, freeShipingRemainingMessage: '', estimatedShippingCost: false, shipping: '0,00 €' }, created: function() { this.getMyCartProductsSummary(); }, methods: { getMyCartProducts: function() { if (!this.hovering) { this.hovering = true; fetch('https://www.adlerapotheke-brilon.de/getMyCartProducts') .then(res => res.json()) .then((jsonResult) => { if (jsonResult.cartProducts) { myCartProductsApp.cartProducts = jsonResult.cartProducts.map(function (item) { return new HeaderCartAppDomain.CartProduct(item); }); } myCartProductsApp.cartValue = jsonResult.cartValue || '0,00 €'; myCartProductsApp.cartSize = jsonResult.cartSize || 0; myCartProductsApp.cartItemsCount = jsonResult.cartItemsCount || 0; myCartProductsApp.freeShipingRemainingMessage = jsonResult.freeShipingRemainingMessage || ''; myCartProductsApp.shipping = jsonResult.shipping || '0,00 €'; myCartProductsApp.isEstimatedShippingCost = jsonResult.estimatedShippingCost || false; console.log(myCartProductsApp.isEstimatedShippingCost); }) .catch((err) => { console.error(err); }); } }, getMyCartProductsSummary: function() { fetch('https://www.adlerapotheke-brilon.de/getMyCartProductsSummary') .then(res => res.json()) .then(jsonResult => { myCartProductsApp.cartValue = jsonResult.cartValue || '0,00 €'; myCartProductsApp.cartSize = jsonResult.cartSize || 0; myCartProductsApp.cartItemsCount = jsonResult.cartItemsCount || 0; }) }, deleteProductFromCart: function(index, productId) { let url = new URL('https://www.adlerapotheke-brilon.de/deleteProductFromCart'); let params = {index: index, productId: productId}; url.search = new URLSearchParams(params).toString(); fetch(url) .then(res => res.json()) .then(jsonResult => { if(window.location.href.indexOf("showcart") !== -1){window.location = shopUrl + "/showcart";} if (jsonResult.cartProducts) { myCartProductsApp.cartProducts = jsonResult.cartProducts.map(function(item) { return new HeaderCartAppDomain.CartProduct(item); }); } else { myCartProductsApp.cartProducts = [] window['isCartEmpty'] = 'true'; } myCartProductsApp.cartValue = jsonResult.cartValue || '0,00 €'; myCartProductsApp.cartSize = jsonResult.cartSize || 0; myCartProductsApp.cartItemsCount = jsonResult.cartItemsCount || 0; myCartProductsApp.freeShipingRemainingMessage = jsonResult.freeShipingRemainingMessage || ''; myCartProductsApp.shipping = jsonResult.shipping || '0,00 €'; }); } } }) Rezeptfoto Hier können Sie ein Rezeptbild hochladen oder direkt mit dem Smartphone fotografieren. Bitte beachten Sie, dass nur jpg-Dateien ausgewählt werden können. Bei der Abholung der Medikamente wird das Originalrezept benötigt. Bitte haben Sie etwas Geduld, das Rezeptbild wird für eine sichere Übertragung an die Apotheke vorbereitet. var publicKeys = []; publicKeys.push('MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCUWWmaSlTtYgvj7V7hyaETgdwwdUil9m+OZv6sWGCEb1otpsXmRSDQe7w57p/Vhw+a+Foc3CSpHIUXmT2weQN+6ZoIPIbXrD/lEjrSjV98sUBdsXin8s6vlZyDqwrjGdxphdBxGqFvWoD6SgxcKUMLED2oJjIJ26KGDfXMQcMsJQIDAQAB'); var width = 1024; var height = 0; var streaming = false; var rezeptVideo = null; var rezeptCanvas = null; var rezeptPhoto = null; var rezeptTakePhoto = null; var hasDeclinedWebcamAccess = false; var fromRezeptView = false; if('main' == 'rezept') { fromRezeptView = true; } var rezeptTopButtonClicked = false; var imageInputInit = false; var fileInputInit = false; var openFileIntervalRezept = null; var continueShopping = false; function openFileInputRezept() { openFileIntervalRezept = setInterval(function() { if (localStorage.getItem('openFileInputRezept')) { document.getElementById('rezeptFileCryptedUpload')?.click(); localStorage.removeItem('openFileInputRezept'); clearInterval(openFileIntervalRezept); } }, 100); } document.addEventListener("DOMContentLoaded", function () { initFileInputForEncryptUpload(publicKeys); document.querySelectorAll('.rezeptTop').forEach(el => { el.addEventListener('click', function (e) { e.preventDefault(); this.classList.add("cliked"); function doAction() { if (hasERezeptProducts === 'true' && onlyAllowOneSpecialTypePerCart === 'true') { alert('Bitte entfernen Sie e-rezept-Produkte aus dem Warenkorb und versuchen Sie es erneut'); return; } if (typeof KronsoftEncryptor !== 'undefined') { rezeptTopButtonClicked = true; try { if (typeof navigator.mediaDevices === 'undefined' || hasDeclinedWebcamAccess || isMobileBrowser()) { start(false, false); document.getElementById('rezeptFileCryptedUpload')?.click(); } else { openFileInputRezept(); navigator.mediaDevices.enumerateDevices().then(function (devices) { // check the user actually has a webcam if (devices.some(function (device) { return 'videoinput' === device.kind })) { clearInterval(openFileIntervalRezept); var html = "\\ \ \ \ Bild von Festplatte wählen\ \ \ Bild aufnehmen\ \ \ " awPopup(html, 'Rezeptfoto', 'take-webcam-photo remove-popup', undefined, undefined, 'auto', true); document.querySelectorAll('.buttonLinks.rezept.disk').forEach(el => { el.addEventListener('click', function () { const fileInputElement = document.getElementById('rezeptFileCryptedUpload'); if (fileInputElement) { fileInputElement.click(); } closePopup(); }); }); document.querySelectorAll('.buttonLinks.rezept.webcam').forEach(el => { el.addEventListener('click', function () { if (isMobileAndroidDevice()) { document.querySelectorAll('.buttonLinks.rezept.disk').forEach(el => { el.click(); }); } else { openWebcamPopup(); } }); }); } else { localStorage.setItem('openFileInputRezept', 'Y'); } }) start(false, false); } } catch (e) { console.error(e); document.getElementById('rezeptFileCryptedUpload')?.click(); } } } if ('false' === 'true') { var html = ''; html += 'Ich habe die AGB und die Datenschutzbestimmungen gelesen und erkläre mich mit diesen einv'; var time = new Date().getTime(); html += 'KaufenWeiter shoppen'; awPopup(html, 'Rezeptfoto', 'take-webcam-photo', undefined, undefined, 'auto', true); document.getElementById('create-order' + time)?.addEventListener('click', function() { if (document.querySelector('#agb')?.checked) { document.querySelector('.aw-popup-close')?.click(); continueShopping = false; doAction(); } }); document.getElementById('continue-shopping' + time)?.addEventListener('click', function() { if (document.querySelector('#agb')?.checked) { document.querySelector('.aw-popup-close')?.click(); continueShopping = true; doAction(); } }); } else { doAction(); } }); }); rezeptFileCryptedUploadButtonClickEvent(); }); function rezeptFileCryptedUploadButtonClickEvent() { let rezeptFileCryptedUploadButton = document.getElementById('rezeptFileCryptedUploadButton'); if (rezeptFileCryptedUploadButton) { rezeptFileCryptedUploadButton.addEventListener('click', function (e) { if (fromRezeptView) { start(false, false); } else { e.preventDefault(); const callback = () => { const rezeptFileCryptedUpload = document.querySelector('#rezeptFileCryptedUpload'); if (rezeptFileCryptedUpload?.value !== '') { const button = document.querySelector('#rezeptFileCryptedUploadButton'); button.setAttribute('disabled', 'true'); button.classList.add('loadingAddToCart'); start(true, false); } }; if (typeof customRezeptButtonUpload !== 'undefined' && customRezeptButtonUpload) { callback(); } else { document.querySelector('#rezeptFileCryptedUpload').addEventListener('change', callback); } } }); } } function initFileInputForEncryptUpload(publicKeys) { try { awAsyncJS("/ecommerce/images/js/KronsoftEncryptor.min.js"); } catch (e) { console.error(e); const fileInputElement = document.getElementById('rezeptFileCryptedUpload'); if (fileInputElement) { fileInputElement.remove(); } } } function sendDataToServer(publicKey, encryptedFile, extension, index) { index = index || 0; var isLast = (encryptedFile.length - 1 === index); var isFirst = index === 0; var data = { encryptedFile: encryptedFile[index], extension: extension, isLast: isLast, isFirst: isFirst, publicKey: publicKey, continueShopping: continueShopping }; var searchParams = new URLSearchParams(data); fetch(uploadRezeptFileUrl, { method: 'POST', headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, body: searchParams.toString() }).then(response => response.text()).then(resp => { if (resp === 'error') { alert('Bitte entfernen Sie e-rezept-Produkte aus dem Warenkorb und versuchen Sie es erneut'); window.location.reload(); return; } if (!isLast) { encryptedFile[index] = undefined; sendDataToServer(publicKey, encryptedFile, extension, index + 1); } else { removeClass('.rezeptTop', 'loading'); if (resp === 'success' || resp.indexOf('ERROR_') === 0) { if (resp === 'ERROR_EREZEPT') { alert('Bitte entfernen Sie e-rezept-Produkte aus dem Warenkorb und versuchen Sie es erneut'); window.location.reload(); } else { window.location.href = 'https://www.adlerapotheke-brilon.de/showcart'; } } else { window.location.href = 'https://www.adlerapotheke-brilon.de/ordercomplete?rezeptOrderId=' + resp; } } }); } function additionalOnChange() { if (rezeptTopButtonClicked === true) { document.querySelectorAll('.rezeptTop.cliked').forEach(el => { el.classList.add('loading'); }); const rezeptFotoMobileIcon = document.querySelector('div.rezeptFotoMobile div.h2 i'); if (rezeptFotoMobileIcon && rezeptFotoMobileIcon.offsetWidth > 0 && rezeptFotoMobileIcon.offsetHeight > 0) { document.querySelector('div.rezeptFotoMobile').classList.add('loading'); } document.querySelectorAll('.rezepteinreichenFotoAdd.cliked').forEach(el => { el.classList.add('loadingAddToCart'); }); } else { const rezeptFileCryptedUploadButton = document.getElementById('rezeptFileCryptedUploadButton'); if (rezeptFileCryptedUploadButton) { rezeptFileCryptedUploadButton.setAttribute('disabled', 'true'); rezeptFileCryptedUploadButton.classList.add('loadingAddToCart'); } } } function start(isFromShowCart, isWebcam) { const callback = function (publicKey, encryptedFile, resizedPlainText, extension) { const isEncryptedCorrectly = (encryptedFile.match(/:::/g) || []).length === 1; if (isEncryptedCorrectly) { // half a MB encryptedFile = encryptedFile.match(/.{1,524288}/g); sendDataToServer(publicKey, encryptedFile, extension); } else { errorCallback('corrupted_image'); } }; const beforeCallback = function (plainText, extension, callback) { // not sure what this was supposed to do before cleanup. // this.classList.add("loading"); callback(); }; var errorCallback = function(error) { const btn = document.getElementById('rezeptFileCryptedUploadButton'); if (btn) { btn.removeAttribute('disabled'); btn.classList.remove('loadingAddToCart'); } removeClass('.rezeptTop', 'loading'); setValue("#rezeptFileCryptedUpload", ''); setTimeout(function() { if ('not_image' === error) { alert('Es können nur image-Dateien ausgewählt werden.'); } else if ('small_image' === error) { alert('Dieses Bild ist zu klein, laden Sie bitte ein größeres Bild hoch.'); } else if ('large_image' === error) { alert('Dieses Bild ist zu groß, bitte laden Sie ein kleineres Bild hoch.'); } else { alert('Beim Verarbeiten Ihres Bildes ist ein Problem aufgetreten. Bitte aktualisieren Sie die Seite und versuchen Sie es dann erneut.'); } }, 100); }; if (isWebcam) { if (!imageInputInit) { KronsoftEncryptor.initImageInput(publicKeys, getProperty('rezept-photo', 'src'), isFromShowCart, additionalOnChange, callback, beforeCallback, errorCallback); imageInputInit = true; } } else { if (!fileInputInit) { KronsoftEncryptor.initFileInput(publicKeys, 'rezeptFileCryptedUpload', isFromShowCart, additionalOnChange, callback, beforeCallback, errorCallback); fileInputInit = true; } } } function openWebcamPopup() { var html = "" + "Die Kamera Berechtigung ist nicht aktiv!" + "Video stream not available." + "Foto aufnehmen" + "Foto verwenden" + "Versuch es noch einmal" + "Bild von Festplatte wählen" + ""; closePopup(); awPopup(html, 'Rezeptfoto', 'take-webcam-photo', undefined, undefined, 'auto', true); document.querySelectorAll('.aw-popup-close').forEach(el => { el.addEventListener('click', function () { stopVideoStream(); }); }); initWebcam(); } function initWebcam() { rezeptVideo = document.getElementById('rezept-video'); rezeptCanvas = document.getElementById('rezept-canvas'); rezeptPhoto = document.getElementById('rezept-photo'); rezeptTakePhoto = document.getElementById('rezept-take-photo'); navigator.mediaDevices.getUserMedia({video: {facingMode: "environment"}, audio: false}) .then(function(stream) { const removePopup = document.querySelector(".remove-popup"); if (removePopup) { removePopup.parentElement.remove(); } rezeptVideo.srcObject = stream; rezeptVideo.play(); rezeptVideo.onloadedmetadata = function () { show('#rezept-video'); show('#rezept-take-photo'); }; }) .catch(function(err) { const removePopup = document.querySelector(".remove-popup"); if (removePopup) { removePopup.parentElement.remove(); } hasDeclinedWebcamAccess = true; show('#cameraNotActive'); show('#rezept-upload-from-disk'); document.getElementById('rezept-upload-from-disk').addEventListener('click', function () { const fileInputElement = document.getElementById('rezeptFileCryptedUpload'); if (fileInputElement) { fileInputElement.click(); } document.querySelector('.aw-popup-close')?.click(); }); hide('#rezept-take-photo'); }); rezeptVideo.addEventListener('canplay', function(ev){ if (!streaming) { height = rezeptVideo.videoHeight / (rezeptVideo.videoWidth/width); if (isNaN(height)) { height = width / (4/3); } rezeptVideo.setAttribute('width', width); rezeptCanvas.setAttribute('width', width); streaming = true; } }, false); rezeptTakePhoto.addEventListener('click', function(ev){ takepicture(); hideVideo(); showPicture(); ev.preventDefault(); }, false); clearphoto(); } function stopVideoStream() { if (rezeptVideo.srcObject && rezeptVideo.srcObject.getTracks()) { rezeptVideo.srcObject.getTracks().forEach(function(track) { track.stop(); }); rezeptVideo.srcObject = null; streaming = false; } } function hideVideo() { hide('#rezept-video'); stopVideoStream(); } function showVideo() { show('#rezept-video'); initWebcam(); } function showPicture() { show('#rezept-photo'); show('#rezept-try-again'); show('#rezept-use-photo'); hide('#rezept-take-photo'); } function hidePicture() { hide('#rezept-photo'); hide('#rezept-try-again'); hide('#rezept-use-photo'); show('#rezept-take-photo'); } function clearphoto() { const context = rezeptCanvas.getContext('2d'); context.fillStyle = "#AAA"; context.fillRect(0, 0, rezeptCanvas.width, rezeptCanvas.height); var data = rezeptCanvas.toDataURL('image/jpeg'); rezeptPhoto.setAttribute('src', data); } function takepicture() { const context = rezeptCanvas.getContext('2d'); if (width && height) { rezeptCanvas.width = width; rezeptCanvas.height = height; context.drawImage(rezeptVideo, 0, 0, width, height); const data = rezeptCanvas.toDataURL('image/jpeg'); rezeptPhoto.setAttribute('src', data); } else { clearphoto(); } } function closePopup(e){ document.documentElement.classList.remove("popup-open"); const awPopupOverlay = document.querySelector('.aw-popup-overlay'); if (awPopupOverlay) { awPopupOverlay.remove(); } } function rezeptFotoUploadFilePopup(){ const html = "\ \ \ \ Sie möchten noch ein Rezept einreichen?\ Dann laden Sie Ihr Rezept hier als Bild hoch:\ \ \ Datei hochladen\ \ \ "; awPopup2(html, "", "awRezeptFilePopup", true); rezeptFileCryptedUploadButtonClickEvent(); } .take-webcam-photo .content { display: flex; flex-wrap: wrap; justify-content: center; } .take-webcam-photo .output { order: 0; } .take-webcam-photo .camera { order: 1; text-align: center; } .take-webcam-photo #rezept-video { width: 100%; } .take-webcam-photo .buttonLinks{ margin: 0.2em; } .aw-popup-overlay { z-index: 9999 !important; } .aw-popup.take-webcam-photo { margin-top: 0 !important; transform: translateY(-50%); } .aw-popup-overlay ~ .aw-popup-overlay { opacity:0 } Suche document.querySelectorAll(".close-icon").forEach(function(el) { el.addEventListener(respAction, function(e) { setTimeout(function() { document.querySelector(".searchWithAutocomplete").value = ""; }, 100); }); }); Menü Menü .fade-enter-active, .fade-leave-active { transition: opacity .5s; } .fade-enter, .fade-leave-to { opacity: 0; } .fade-leave, .fade-enter-to { opacity: 1; } Kategorien durchsuchen {{node.prefixText}}{{node.categoryName}}{{node.categoryNameExtra}} ({{node.memberSumCount}}) document.addEventListener("DOMContentLoaded", () => { var NodeTemplate1769213709629 = { name: 'node-template1769213709629', template: '#nodeTemplate1769213709629', props: ['node', 'breadcrumbs'], methods: { nodeMaximized: function(node) { this.$emit('maximize', node); }, nodeMinimized: function(node) { this.$emit('minimize', node); } }, created: function() { if (!!(this.breadcrumbs) && this.breadcrumbs.includes(this.node.categoryId)) { this.$emit('maximize', this.node); this.node.class = this.node.class + " current"; } } }; Vue.component('node-template1769213709629', NodeTemplate1769213709629); var DynamicTreeDomain1769213709629 = (function (){ function node(data) { this.categoryId = data.categoryId || ''; this.categoryName = data.categoryName || ''; this.memberSumCount = data.memberSumCount || 0; this.url = 'https://www.adlerapotheke-brilon.de/' + data.url + ''; this.hasChildren = data.hasChildren || false; this.level = data.level || 1; if (this.hasChildren) { this.class = 'level0' + this.level + ' group'; this.subClass = "menu0" + this.level; } else { this.class = 'level0' + this.level + ' link'; } this.childNodes=[]; this.expanded = false; this.cssClass = data.cssClass || ''; this.style = data.style || ''; this.prefixText = data.prefixText || ''; this.categoryNameExtra = data.categoryNameExtra || ''; this.hasValidChildren = data.hasValidChildren || false; } return { Node: node } })(); var appTree1769213709629 = new Vue({ el: '#smallBoxCategory1769213709629', data: { miniTree: false, topLevelTree: [], breadcrumbs:[], topCategory: {} }, created: function() { if (typeof dontGetTopLevelTree !== 'undefined') { } else { this.getTopLevelTree(); } }, methods: { getTopLevelTree: function () { let url = new URL('https://www.adlerapotheke-brilon.de/getTopLevelTree'); let params = {currentCategoryId: '',currentProductId: '' }; url.search = new URLSearchParams(params).toString(); fetch(url) .then(res => res.json()) .then(jsonResult => { appTree1769213709629.topLevelTree = jsonResult.dynamicNodes.map(function(node) { return new DynamicTreeDomain1769213709629.Node(node); }); appTree1769213709629.breadcrumbs = jsonResult.breadcrumbs; appTree1769213709629.miniTree = jsonResult.miniTree; if(typeof callbackDt === "function") { callbackDt(); } }); }, nodeMaximized: function(node) { if (node.childNodes.length === 0) { let url = new URL('https://www.adlerapotheke-brilon.de/maximizeNode'); let params = {maximizeCategoryId: node.categoryId}; url.search = new URLSearchParams(params).toString(); fetch(url) .then(res => res.json()) .then(jsonResult => { let childNodes = jsonResult.dynamicNodes.map(function(node) { return new DynamicTreeDomain1769213709629.Node(node); }); node.childNodes = childNodes; }); } node.expanded = true; node.class = 'level0' + node.level + ' group opened'; }, nodeMinimized: function(node) { node.expanded = false; node.class = 'level0' + node.level + ' group'; } } }) }); window.onload = function() { const divs = document.getElementsByClassName("superLnkDiv"); if (divs && divs.length > 0) { Array.from(divs).forEach(div => { div.style.display = "block"; }); } }; RezeptfotoHier können Sie ein Rezeptbild hochladen oder direkt mit dem Smartphone fotografieren. Bitte beachten Sie, dass nur jpg-Dateien ausgewählt werden können. Bei der Abholung der Medikamente wird das Originalrezept benötigt.Bitte haben Sie etwas Geduld, das Rezeptbild wird für eine sichere Übertragung an die Apotheke vorbereitet. E-Rezept einlösen var hasDeclinedWebcamAccessBarcode = false; var isOverlayDisplayed = false; var isDesktop = !isMobileBrowser(); var widthBarcodeScanner = 1024; var heightBarcodeScanner = 0; var streamingBarcodeScanner = false; var barcodeScannerVideo = null; var barcodeScannerCanvas = null; var barcodeScannerPhoto = null; var selectedCamera = null; var videoWidth = 640; var videoHeight = 460; var allowImageUpload = false; var openFileIntervalBarcode = null; var isSaveRunning = false; var savedHashes = []; var cachedHashResults = {}; var errorDisplayed = false; var publicKeys = []; publicKeys.push('MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCUWWmaSlTtYgvj7V7hyaETgdwwdUil9m+OZv6sWGCEb1otpsXmRSDQe7w57p/Vhw+a+Foc3CSpHIUXmT2weQN+6ZoIPIbXrD/lEjrSjV98sUBdsXin8s6vlZyDqwrjGdxphdBxGqFvWoD6SgxcKUMLED2oJjIJ26KGDfXMQcMsJQIDAQAB'); if (!publicKeys.length) { console.error('No public keys configured'); } function escapeHTML(str) { return str.replace(/&/g, '&').replace(//g, '>').replace(/"/g, '"').replace(/'/g, '''); } initResultStringForEncryptionUpload(); function openFileInputBarcode() { openFileIntervalBarcode = setInterval(function() { if (localStorage.getItem('openFileInputBarcode')) { if(isMobileBrowser()){ alert("mobile"); } else { document.getElementById('barcodeFile')?.click(); } localStorage.removeItem('openFileInputBarcode'); clearInterval(openFileIntervalBarcode); } }, 100); } document.querySelectorAll('.barcodeScannerTab').forEach(el => { el.addEventListener('click', function (e) { e.preventDefault(); if (hasRezeptPhotoProducts === 'true' && onlyAllowOneSpecialTypePerCart === 'true') { alert('Bitte entfernen Sie Rezeptfotos aus dem Einkaufswagen und versuchen Sie es erneut'); return; } try { openFileInputBarcode(); navigator.mediaDevices.getUserMedia({video: {facingMode: "environment"}, audio: false}).then(() => { navigator.mediaDevices.enumerateDevices().then(function (devices) { if (devices.some(function (device) { return 'videoinput' === device.kind; })) { if (allowImageUpload) { clearInterval(openFileIntervalBarcode); let html = "\\ \ \ \ Bild von Festplatte wählen\ \ \ Bild aufnehmen\ \ \ " awPopup(html, 'Bitte den Rezeptcode scannen!', 'take-webcam-photo remove-popup', undefined, undefined, 'auto', true); document.querySelectorAll('.buttonLinks.barcode.disk').forEach(el => { el.addEventListener('click', function () { document.getElementById('barcodeFile')?.click(); document.querySelector('.aw-popup-close')?.click(); }); }); document.querySelectorAll('.buttonLinks.barcode.webcam').forEach(el => { el.addEventListener('click', function () { let videoDevices = []; devices.forEach(device => { if (device.kind === 'videoinput') { videoDevices.push(device); } }); const candidate = videoDevices.filter(it => it.label.toLowerCase().indexOf('back') > -1); if (candidate && candidate.length) { selectedCamera = candidate[0].deviceId; } else { selectedCamera = videoDevices[0].deviceId; } openBarcodeWebcamPopup(videoDevices); }); }); } else { let videoDevices = []; devices.forEach(device => { if (device.kind === 'videoinput') { videoDevices.push(device); } }); const candidate = videoDevices.filter(it => it.label.toLowerCase().indexOf('back') > -1); if (candidate && candidate.length) { selectedCamera = candidate[0].deviceId; } else { selectedCamera = videoDevices[0].deviceId; } openBarcodeWebcamPopup(videoDevices); } } else { localStorage.setItem('openFileInputBarcode', 'Y'); } }) }).catch(e => { alert("Die Kamera Berechtigung ist nicht aktiv"); }); } catch (e) { alert(JSON.stringify(e)); document.getElementById('barcodeFile')?.click(); } }); }); document.getElementById('barcodeFile').addEventListener('change', function(e) { addClass('.erezept-file-upload', 'loader'); awAsyncJS("/ecommerce/images/js/zxing-browser.min.js", '', '', '', '', function () { awAsyncJS("/ecommerce/images/js/image-conversion.js", '', '', '', '', function () { const codeReader = new ZXingBrowser.BrowserDatamatrixCodeReader(); const onScanFinishedOk = () => { if (typeof createOrderErezept !== 'undefined' && createOrderErezept) { createQuickOrderERezept(); } else { window.location.href = 'https://www.adlerapotheke-brilon.de/showcart'; } } function withTimeout(promise, timeout) { return new Promise((resolve, reject) => { setTimeout(() => reject(new Error("Timeout")), timeout); promise.then(resolve, reject); }); } const decodeFun = async (img) => { try { return await withTimeout(codeReader.decodeFromImageElement(img), 3000); } catch (e) {} return null; } function canvasToBlob(canvas) { return new Promise((resolve, reject) => { canvas.toBlob(blob => { if (blob) { resolve(blob); } else { reject(new Error('Canvas to Blob conversion failed')); } }, 'image/png'); }); } async function fileToImage(file) { const dataURL = await imageConversion.filetoDataURL(file); return await imageConversion.dataURLtoImage(dataURL); } function rotateImageAndDisplay(imageElement, degrees, targetElementId) { return new Promise((resolve, reject) => { let canvas = document.createElement('canvas'); const ctx = canvas.getContext('2d'); function rotateAndZoomImage(canvas, imageElement, degrees, zoomFactor) { if (degrees === 90 || degrees === 270) { canvas.width = imageElement.height * zoomFactor; canvas.height = imageElement.width * zoomFactor; } else { canvas.width = imageElement.width * zoomFactor; canvas.height = imageElement.height * zoomFactor; } ctx.translate(canvas.width / 2, canvas.height / 2); ctx.rotate(degrees * Math.PI / 180); ctx.scale(zoomFactor, zoomFactor); ctx.drawImage(imageElement, -imageElement.width / 2, -imageElement.height / 2); return canvas; } function handleLoad() { canvas = rotateAndZoomImage(canvas, imageElement, degrees, 1.5); const dataURL = canvas.toDataURL(); const targetElement = document.createElement('img'); targetElement.id = targetElementId; targetElement.src = dataURL; targetElement.style.display = 'none'; document.body.append(targetElement); resolve(); } if (imageElement.complete) { handleLoad(); } else { imageElement.onload = handleLoad; imageElement.onerror = reject; } }); } function sleep(ms) { return new Promise(resolve => setTimeout(resolve, ms)); } const findCodeInImage = async () => { let idx = 0; let found = null; while (!found && idx < 30) { const image = document.getElementById('barcode-scanner-photo-result-rotated'); const canvas = document.createElement("canvas"); const ctx = canvas.getContext("2d"); const desiredWidth = 100 * (idx + 1); const desiredHeight = 100 * (idx + 1); canvas.width = desiredWidth; canvas.height = desiredHeight; ctx.drawImage(image, image.width - desiredWidth, 0, desiredWidth, desiredHeight, 0, 0, desiredWidth, desiredHeight); const croppedImage = canvas.toDataURL("image/jpeg", 1.0); const newImage = document.createElement('img'); newImage.classList.add('erezept-img-test'); newImage.src = croppedImage; newImage.videoWidth = 0; idx++; found = await decodeFun(newImage); if (!found) { const blob = await canvasToBlob(canvas); const compressFile = await imageConversion.compressAccurately(blob, { size: 80, accuracy: 0.99, type: 'image/jpeg', width: '', height: '', scale: 0.5 }); const compressImage = await fileToImage(compressFile); found = await decodeFun(compressImage); } if (desiredWidth > image.width && desiredHeight > image.height) break; } return found; } const decodeFromImage = async () => { const original = document.getElementById('barcode-scanner-photo-result'); const onImageLoad = async () => { const isPortrait = original.naturalWidth < original.naturalHeight; if (isPortrait) { await rotateImageAndDisplay(original, 90, 'barcode-scanner-photo-result-rotated') } else { await rotateImageAndDisplay(original, 0, 'barcode-scanner-photo-result-rotated') } let found = await findCodeInImage(); const angles = [0, 90, 180, 270]; for (let angle of angles) { if (found) break; document.getElementById('barcode-scanner-photo-result-rotated').remove(); await rotateImageAndDisplay(original, angle, 'barcode-scanner-photo-result-rotated'); found = await findCodeInImage(); } if (found) { try { await handleDataMatrixScanned(found, false); onScanFinishedOk(); } catch (e) { removeClass('.erezept-file-upload', 'loader'); original.removeEventListener('load', onImageLoad); } } else { alert('ERezept nicht gefunden'); removeClass('.erezept-file-upload', 'loader'); original.removeEventListener('load', onImageLoad); } } if (original.complete && original.naturalHeight !== 0) { await onImageLoad(); } else { original.addEventListener('load', onImageLoad); } } if (e.target.files && e.target.files.length) { const fr = new FileReader(); fr.onload = async function () { if (fr.result.indexOf('data:image/jpeg') > -1 || fr.result.indexOf('data:image/png') > -1) { document.getElementById('barcode-scanner-photo-result').src = fr.result; await decodeFromImage(); } else if (fr.result.indexOf('data:application/pdf') > -1) { awAsyncJS("https://cdnjs.cloudflare.com/ajax/libs/pdf.js/4.0.269/pdf.min.mjs", '', '', '', '', function () { awAsyncJS("/ecommerce/images/js/html2canvas.min.js", '', '', '', '', async function () { pdfjsLib.GlobalWorkerOptions.workerSrc = 'https://cdnjs.cloudflare.com/ajax/libs/pdf.js/4.0.269/pdf.worker.min.mjs'; const pdfDoc = await pdfjsLib.getDocument(fr.result).promise; const page = await pdfDoc.getPage(1); const viewport = page.getViewport({scale: 2}); const canvas = document.createElement('canvas'); const ctx = canvas.getContext('2d'); canvas.height = viewport.height; canvas.width = viewport.width; const renderContext = { canvasContext: ctx, viewport: viewport, imageSmoothing: true, intent: 'display' }; await page.render(renderContext).promise; document.getElementById('barcode-scanner-photo-result').src = canvas.toDataURL(); await decodeFromImage(); }); }, 'module'); } else { console.log(fr.result); alert('Die hochgeladene Datei ist ungültig!'); removeClass('.erezept-file-upload', 'loader'); } } fr.readAsDataURL(e.target.files[0]); } }); }); }); function openBarcodeWebcamPopup(devices) { const info = ""; let html = "" + "Die Kamera Berechtigung ist nicht aktiv!" + info + "" + "Video stream not available." + "" + "Bild von Festplatte wählen" + //"Kamera wechseln" + "beenden" + "" + "" + "setTimeout(function(){window.dispatchEvent(new Event('resize'));},800)"; execClick('.aw-popup-close'); awPopup(html, 'Bitte den Rezeptcode scannen!', 'take-webcam-photo', undefined, undefined, 'auto', true); document.querySelectorAll('.aw-popup-close, .aw-barcode-close').forEach(el => { el.addEventListener('click', function () { stopVideoStreamBarcode(); }); }); if(devices.length > 1) { const finishScanning = document.getElementById('finish-scanning'); if (finishScanning) { finishScanning.style.display = ''; } document.getElementById('change-camera')?.addEventListener('click', function () { try { let index = 0; for (let i = 0; i < devices.length; i++) { if (devices[i].deviceId === selectedCamera) { if (i === devices.length - 1) { index = 0; } else { index = i + 1; } } } if (barcodeScannerVideo.srcObject) { barcodeScannerVideo.srcObject.getTracks().forEach(function (track) { track.stop(); }); } navigator.mediaDevices .getUserMedia({video: {deviceId: devices[index].deviceId}, audio: false}) .then(stream => { barcodeScannerVideo.srcObject = stream; barcodeScannerVideo.play(); selectedCamera = devices[index].deviceId; }) .catch(e => alert(JSON.stringify(e))); } catch (e) { alert(JSON.stringify(e)); } }); } initWebcamBarcode(); } function wasUrlScanned(currentUrls) { return new Promise((resolve, reject) => { currentUrls = currentUrls || []; if (savedHashes.length === currentUrls.length && savedHashes.length > 1) { return resolve(true); } if (!savedHashes.length) { return resolve(false); } currentUrls.forEach(url => { sha256(url).then(hash => { return resolve(savedHashes.indexOf(hash) > -1); }).catch(reject); }); }); } function removeOverlay() { const actor = document.getElementById('lines'); if (actor) { actor.remove(); } isOverlayDisplayed = false; } function initWebcamBarcode() { getExistingHashes().then(hashes => { savedHashes = hashes; barcodeScannerVideo = document.getElementById('barcode-scanner-video'); barcodeScannerCanvas = document.getElementById('barcode-scanner-canvas'); barcodeScannerPhoto = document.getElementById('barcode-scanner-photo'); navigator.mediaDevices.getUserMedia({video: {facingMode: "environment"}, audio: false}) .then(function(stream) { const removePopup = document.querySelector(".remove-popup"); if (removePopup) { removePopup.parentElement.remove(); } show('#barcode-scanner-video'); show('#barcode-scanner-take-photo'); if (!barcodeScannerVideo) return; barcodeScannerVideo.addEventListener('loadedmetadata', function(e) { const video = e.target; videoWidth = video.videoWidth; videoHeight = video.videoHeight; setTimeout(() => { window.dispatchEvent(new Event('resize')); }, 100); }); barcodeScannerVideo.srcObject = stream; barcodeScannerVideo.play(); }) .catch(function(err) { alert(err) const removePopup = document.querySelector(".remove-popup"); if (removePopup) { removePopup.parentElement.remove(); } hasDeclinedWebcamAccessBarcode = true; show('#cameraNotActive'); const barcodeFromDiskEl = document.getElementById('barcode-scanner-upload-from-disk'); barcodeFromDiskEl.style.display = 'block'; barcodeFromDiskEl.addEventListener('click', function() { execClick('#barcodeFile'); execClick('.aw-popup-close'); }); hide('#barcode-scanner-take-photo'); }); if (!barcodeScannerVideo) return; barcodeScannerVideo.addEventListener('canplay', function(ev){ if (!streamingBarcodeScanner) { heightBarcodeScanner = barcodeScannerVideo.videoHeight / (barcodeScannerVideo.videoWidth/widthBarcodeScanner); if (isNaN(heightBarcodeScanner)) { heightBarcodeScanner = widthBarcodeScanner / (4/3); } barcodeScannerVideo.setAttribute('width', widthBarcodeScanner); barcodeScannerCanvas.setAttribute('width', widthBarcodeScanner); streamingBarcodeScanner = true; } }, false); clearPhotoBarcode(); awAsyncJS("/ecommerce/images/js/zxing.js", '', '', '', '', function() { var codeReader = new ZXing.BrowserDatamatrixCodeReader() document.addEventListener('click', function (e) { if (e.target.closest('#finish-scanning')) { const closePopupEl = document.querySelectorAll('.aw-popup-close, .aw-barcode-close'); closePopupEl.forEach(function (el) { el.addEventListener('click', function () { stopVideoStreamBarcode(); if (savedHashes.length > 0) { if (typeof createOrderErezept !== 'undefined' && createOrderErezept) { setTimeout(function () { createQuickOrderERezept(); }, 1000); } else { setTimeout(function () { window.location.href = 'https://www.adlerapotheke-brilon.de/showcart'; }, 1000); } } }); el.click(); }); codeReader.stopContinuousDecode(); } }); barcodeScannerVideo.pause(); barcodeScannerVideo.play(); codeReader.decodeFromVideoElementContinuously(barcodeScannerVideo, (result) => handleDataMatrixScanned(result, true)); }); }); } async function handleDataMatrixScanned(result, isScan) { return new Promise(async (resolve, reject) => { if (result) { try { var scans = JSON.parse(result.text); var urls = scans['urls']; if (isScan) { displayOverlay(result, urls); } await addToCartIfRequired(urls); } catch (e) { //alert(JSON.stringify(e)); reject(); return; } } else { if (isScan) { removeOverlay(); } } resolve(); }); } async function displayOverlay(result, urls) { if (!result.resultPoints) return; const wasScannedBefore = await wasUrlScanned(urls); if (isOverlayDisplayed) return; isOverlayDisplayed = true; const videoWrapper = document.getElementById('video-wrapper'); const canvas = document.createElement('canvas'); canvas.id = 'lines'; canvas.style.position = 'absolute'; canvas.style.width = '100%'; canvas.style.height = '100%'; canvas.style.left = '0'; canvas.style.top = '0'; canvas.style.maxWidth = '100vw'; canvas.style.maxHeight = '100vh'; if (!videoWrapper) return; videoWrapper.insertBefore(canvas, videoWrapper.firstChild); const cr = document.getElementById('barcode-scanner-video').getBoundingClientRect(); const lines = document.getElementById('lines'); lines.width = cr.width; lines.height = cr.height; const divX = videoWidth / cr.width; const divY = videoHeight / cr.height; const ctx = lines.getContext("2d"); ctx.strokeStyle = wasScannedBefore ? '#e42319' : '#00A200'; ctx.lineWidth = 4; let minX = result.resultPoints[0].x; let maxX = result.resultPoints[0].x; let minY = result.resultPoints[0].y; let maxY = result.resultPoints[0].y; result.resultPoints.forEach((currentPoint, i) => { const nextPoint = result.resultPoints[(i + 1) % result.resultPoints.length]; if (currentPoint.x && currentPoint.y && nextPoint.x && nextPoint.y) { minX = Math.min(minX, currentPoint.x); maxX = Math.max(maxX, currentPoint.x); minY = Math.min(minY, currentPoint.y); maxY = Math.max(maxY, currentPoint.y); if (isDesktop) { ctx.beginPath(); ctx.moveTo(currentPoint.x / divX, currentPoint.y / divY); ctx.lineTo(nextPoint.x / divX, nextPoint.y / divY); ctx.stroke(); } } }); const rectCenterX = (minX + maxX) / 2; const rectCenterY = (minY + maxY) / 2; const iconSize = ((maxX - minX) / 2) - 10; const imageX = rectCenterX / divX - iconSize / 2; const imageY = rectCenterY / divY - iconSize / 2; const textX = rectCenterX / divX; const textY = minY / divY - 30; const textXOffset = 25; const fSize = 18; const textBackgroundX = textX - textXOffset; const textBackgroundY = textY - fSize; const textBackgroundHeight = fSize * 1.26; if (wasScannedBefore) { const text = "Code bereits im Warenkorb!"; ctx.font = fSize + 'px/1.25em Arial,Helvetica,sans-serif'; const textWidth = ctx.measureText(text).width; const textXCoord = textX - textWidth / 2; const textBackgroundWidth = textWidth + 10; ctx.fillStyle = "#e42319"; ctx.fillRect(textXCoord - 5, textBackgroundY, textBackgroundWidth, textBackgroundHeight); ctx.fillStyle = "#F7C631"; ctx.fillText(text, textXCoord, textY); const image = new Image(); image.src = '/ecommerce/layout/images/exclamation.png'; image.onload = () => { ctx.drawImage(image, imageX, imageY, iconSize, iconSize); }; } else { const text = "Produkte in den Warenkorb gelegt"; ctx.font = fSize + 'px/1.25em Arial,Helvetica,sans-serif'; const textWidth = ctx.measureText(text).width; const textXCoord = textX - textWidth / 2; const textBackgroundWidth = textWidth + 10; ctx.fillStyle = "#00A200"; ctx.fillRect(textXCoord - 5, textBackgroundY, textBackgroundWidth, textBackgroundHeight); ctx.fillStyle = "#fff"; ctx.fillText(text, textXCoord, textY); const image = new Image(); image.src = '/ecommerce/layout/images/checked.png'; image.onload = () => { ctx.drawImage(image, imageX, imageY, iconSize, iconSize); }; } setTimeout(removeOverlay, 500); if (typeof createOrderErezept !== 'undefined' && createOrderErezept) { if (urls.length === 1) { setTimeout(() => { const content = 'WeiterscannenVorbestellen'; const title = 'Sie haben einen Einzelcode gescannt, möchten Sie:'; setProperty('.take-webcam-photo', 'style', 'z-index: 0 !important;'); awPopup2(content, title, 'barcode-scanner-decision', undefined, undefined, true); }); } } } function getExistingHashes() { return new Promise((resolve, reject) => { fetch('https://www.adlerapotheke-brilon.de/getBarcodeItemHashes') .then(res => res.json()) .then(jsonResult => { resolve(jsonResult); }).catch(() => resolve([])); }); } async function addToCartIfRequired(urls) { return new Promise(async (resolve, reject) => { if (isSaveRunning) return resolve(); isSaveRunning = true; if (urls) { const results = await Promise.all(urls.map(async url => { const hash = await sha256(url); return {url:url, hash: hash}; })); for (const {url, hash} of results) { if (savedHashes.indexOf(hash) < 0) { savedHashes.push(hash); const id = Date.now(); const value = JSON.stringify({'urls': [url]}); const hiddenInput = document.createElement('input'); hiddenInput.type = 'hidden'; hiddenInput.id = id; hiddenInput.value = value; document.body.appendChild(hiddenInput); try { await startEncryption(id, url); } catch (e) { console.log('Encryption not started'); reject(); return; } } } if (urls.length > 1) { document.getElementById('finish-scanning')?.click(); } } isSaveRunning = false; resolve(); }); } function stopVideoStreamBarcode() { if (!barcodeScannerVideo) return; if (barcodeScannerVideo.srcObject && barcodeScannerVideo.srcObject.getTracks()) { barcodeScannerVideo.srcObject.getTracks().forEach(function(track) { track.stop(); }); barcodeScannerVideo.srcObject = null; streamingBarcodeScanner = false; } } function clearPhotoBarcode() { let context = barcodeScannerCanvas.getContext('2d'); context.fillStyle = "#AAA"; context.fillRect(0, 0, barcodeScannerCanvas.width, barcodeScannerCanvas.height); let data = barcodeScannerCanvas.toDataURL('image/jpeg'); barcodeScannerPhoto.setAttribute('src', data); } var interval; function initResultStringForEncryptionUpload() { try { awAsyncJS("/ecommerce/images/js/KronsoftEncryptor.min.js", '', '', '', '', function() { interval = setInterval(function() { if(getValue('#barcodeResult') !== '') { startEncryption(); } }, 1000); }); } catch (e) { console.error(e); document.getElementById('barcodeFile')?.remove(); } } function startEncryption(selector, url) { return new Promise((resolve, reject) => { selector = selector || '#barcodeResult'; clearInterval(interval); const callback = async function(publicKey, encryptedString) { if (!url) return; const hash = await sha256(url); try { await addToCartBarcodeProduct(encryptedString, hash); return resolve(); } catch (e) { console.log('Not added to cart'); reject(); } }; KronsoftEncryptor.initStringInput(publicKeys, document.getElementById(selector)?.value, callback); }); } function sha256(input) { return new Promise((resolve, reject) => { if (cachedHashResults[input]) { return resolve(cachedHashResults[input]); } else { const msgUint8 = new TextEncoder().encode(input); crypto.subtle.digest('SHA-256', msgUint8).then(hashBuffer => { const hashArray = Array.from(new Uint8Array(hashBuffer)); const hashHex = hashArray.map(b => b.toString(16).padStart(2, '0')).join(''); cachedHashResults[input] = hashHex; resolve(hashHex); }).catch(reject); } }); } function addToCartBarcodeProduct(encryptedString, hash) { return new Promise((resolve, reject) => { let url = new URL('https://www.adlerapotheke-brilon.de/addToCartBarcodeProduct'); let params = {encryptedString, hash}; url.search = new URLSearchParams(params).toString(); fetch(url) .then(res => res.text()) .then(resp => { if(resp !== 'error') { renderMicrocart(urlRenderMicrocart, ''); } else { if (!errorDisplayed) { errorDisplayed = true; alert('Bitte entfernen Sie Rezeptfotos aus dem Einkaufswagen und versuchen Sie es erneut'); document.querySelectorAll(".erezept-file-upload").forEach(el => { el.classList.remove("loader"); }); reject(); return; } } resolve(); }); }); } function myFunction(content, title) { if (content !== undefined) { const template = ` ` + title + ` Zurück ` + content + ` Sammelcode rechts oben Richten Sie den rechten oberen Sammelcode im Rahmen aus zum Scannen. `; document.body.insertAdjacentHTML('beforeend', template); document.addEventListener('click', function (e) { const target = e.target; if (target.closest('.aw-barcode-close') || target.classList.contains('aw-barcode-close')) { closePopup(); } if (target.classList.contains('aw-barcode-overlay')) { if (!target.querySelector('.aw-barcode').classList.contains('no-overlay-close')) { closePopup(); } } }); function closePopup() { document.removeEventListener('click', arguments.callee); const overlay = document.querySelector('.aw-barcode-overlay'); if (overlay) { overlay.classList.remove("active"); } stopVideoStreamBarcode(); setTimeout(() => { if (overlay) { overlay.remove(); } }, 200); } } } document.addEventListener('click', function (e) { if (e.target.closest('.decision-continue')) { const barcodeScannerDecision = document.querySelector('.barcode-scanner-decision'); if (barcodeScannerDecision) { barcodeScannerDecision.remove(); } const webcamPhoto = document.querySelector('.take-webcam-photo'); if (webcamPhoto) { webcamPhoto.removeAttribute('style'); } } if (e.target.closest('.decision-create-order')) { const closestPopup = e.target.closest('.aw-popup'); if (closestPopup) { const closeButton = closestPopup.querySelector('.aw-popup-close'); if (closeButton) { closeButton.click(); } } createQuickOrderERezept(); } }); function createQuickOrderERezept() { if (document.querySelectorAll('.aw-quick-order').length > 0) return; var html = ''; html += 'Ich habe die AGB und die Datenschutzbestimmungen gelesen und erkläre mich mit diesen einv'; html += ''; if (isBotendiesnt()) { html += '' + '' + '' + '' + '' + ' Ich bin mit der Speicherung meiner Daten für die Belieferung und Rechnungsstellung einverstanden. ' + ''; } html += 'Vorbestellen'; awPopup2(html, '', 'aw-quick-order', undefined, undefined, true); } document.addEventListener('click', function (e) { if (e.target.closest('#create-order')) { const agbCheckbox = document.querySelector('#agb'); const dataStorageAgreementCheckbox = document.querySelector('#dataStorageAgreement'); if (agbCheckbox && agbCheckbox.checked && (!isBotendiesnt() || (dataStorageAgreementCheckbox && dataStorageAgreementCheckbox.checked))) { const closestPopup = e.target.closest('.aw-popup'); if (closestPopup) { closestPopup.querySelector('.aw-popup-close')?.click(); } let form = ''; Object.entries(window.erezeptQuickOrderData).forEach(function([key, value]) { value = value ? value.replace(/"/g, '\\"') : ''; form += ''; }); const newForm = document.createElement('form'); newForm.action = 'https://www.adlerapotheke-brilon.de/erezeptquickorder'; newForm.method = 'POST'; newForm.innerHTML = form; document.body.appendChild(newForm); newForm.submit(); } } }); .take-webcam-photo .content { display: flex; flex-wrap: wrap; justify-content: center; } .take-webcam-photo .output { order: 0; } .take-webcam-photo .camera { order: 1; text-align: center; } .take-webcam-photo #barcode-scanner-video { width: 100%; } .take-webcam-photo .buttonLinks { margin: 0.2em; } .aw-popup-overlay { z-index: 9999999999 !important; } .aw-popup.take-webcam-photo { margin-top: 0 !important; transform: translateY(-50%); } .aw-popup-overlay ~ .aw-popup-overlay { opacity: 0 } .aw-barcode-overlay { background-color: #000; background-color: rgba(0,0,0,.9); height: 0; left: 0; margin-top: 100vh; overflow-x: hidden; position: fixed; top: 0; transition: all .5s cubic-bezier(.76,0,.24,1); z-index: 99999; width: 100%; display: flex; align-items: center; justify-content: center; color: #fff; } .aw-barcode-overlay.active { height: 100vh; margin-top: 0; } .aw-barcode-close { left: 5%; position: absolute; top: 10px; font-size: 20px; z-index: 999; } .aw-barcode-content { position: relative; display: flex; align-items: center; justify-content: center; } .aw-barcode-frame { position: absolute; border-style: solid; border-color: rgba(0, 0, 0, 0.48); box-shadow: 0 0 0 9999px rgb(0 0 0 / 48%); box-sizing: border-box; width: 300px; height: 300px; } .aw-barcode-prescription-border { height: 550px; width: 550px; position: absolute; z-index: 900; border: 3px solid #fff; border-radius: 12px; margin-bottom: 1rem; max-width: 90vw; max-height: 90vh; } .aw-barcode-prescription-text { background-color: #fff; border-radius: 0 6px 0 12px; display: inline-block; font-size: 1rem; font-weight: 700; padding: 4px 8px; position: absolute; right: 0; z-index: 1; color: #000; } .aw-barcode-frame { background: linear-gradient(to right, #fff 4px, transparent 4px) 0 0, linear-gradient(to right, #fff 4px, transparent 4px) 0 100%, linear-gradient(to left, #fff 4px, transparent 4px) 100% 0, linear-gradient(to left, #fff 4px, transparent 4px) 100% 100%, linear-gradient(to bottom, #fff 4px, transparent 4px) 0 0, linear-gradient(to bottom, #fff 4px, transparent 4px) 100% 0, linear-gradient(to top, #fff 4px, transparent 4px) 0 100%, linear-gradient(to top, #fff 4px, transparent 4px) 100% 100%; background-repeat: no-repeat; background-size: 40px 40px; } .aw-barcode-text { background: rgba(31,31,33,.8); border-radius: 8px; color: #fff; padding: 12px; font-size: 1.25rem; font-weight: 700; line-height: 1.625rem; max-width: 90vw; margin: 0 auto; width: 100%; position: relative; } .aw-barcode-title { display: none; } .aw-barcode-close span:before { content: "\f0a8"; font-family: 'FontAwesome'; font-size: 25px; margin-right: 0.5em; } #barcode-scanner-video { max-width: 100vw; max-height: 100vh; } #finish-scanning { display: none !important; } @media(max-height: 880px) { .aw-barcode-text { position: absolute; transform: translateX(-50%); left: 50%; bottom: 0; width: 100%; } } #change-camera { position: absolute; bottom: 0.5em; right: calc(50% - 34px); z-index: 99999; font-family: FontAwesome; } #change-camera em { display:none } #change-camera span:after{ content:""; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'%3E%3Cpath style='fill:%23fff%3B' d='M37.969 9c-4.009 0-7.445 2.646-8.407 6.531a3 3 0 0 0 0 .031L29.22 17h-5.313C18.506 17 14 21.364 14 26.75v2.344a3 3 0 1 0 6 0V26.75c0-2.092 1.653-3.75 3.906-3.75h7.688a3 3 0 0 0 2.906-2.313l.875-3.718v-.032c.22-.82 1.652-1.937 2.594-1.937H62.03c.942 0 2.374 1.116 2.594 1.938v.03l.875 3.72A3 3 0 0 0 68.406 23h7.688C78.347 23 80 24.658 80 26.75v30.5c0 2.091-1.653 3.75-3.906 3.75H23.906C21.653 61 20 59.341 20 57.25V39.062a3 3 0 1 0-6 0v9.376c-2.29 1.51-4.245 3.192-5.75 5.156-1.82 2.375-3 5.283-3 8.406 0 3.757 1.69 7.111 4.188 9.781 2.496 2.67 5.853 4.868 9.874 6.688 6.114 2.765 13.789 4.655 22.344 5.406l-2.375 1.656a3 3 0 1 0 3.438 4.906l10-7a3 3 0 0 0 0-4.906l-10-7a3 3 0 0 0-1.969-.562 3 3 0 0 0-1.469 5.469l1.094.78c-7.416-.82-14.009-2.526-19.063-4.812-3.578-1.619-6.37-3.53-8.125-5.406-1.753-1.876-2.437-3.51-2.437-5 0-1.238.456-2.537 1.625-4.063.435-.567.997-1.136 1.625-1.718v1.031c0 5.386 4.506 9.75 9.906 9.75h52.188c5.4 0 9.906-4.364 9.906-9.75v-1.031c.628.582 1.19 1.151 1.625 1.718 1.168 1.526 1.625 2.825 1.625 4.063 0 2.3-1.844 5.258-6.188 8.063-4.343 2.804-10.816 5.144-18.468 6.468a2.777 3.249 0 0 0 .812 6.438c8.134-1.408 15.168-3.888 20.375-7.25C90.99 72.356 94.75 67.802 94.75 62c0-3.122-1.18-6.031-3-8.406-1.504-1.964-3.46-3.647-5.75-5.157V26.75c0-5.386-4.506-9.75-9.906-9.75H70.78l-.344-1.438a3 3 0 0 0 0-.03C69.478 11.645 66.04 9 62.032 9H37.97zM50 24c-8.801 0-16 7.199-16 16s7.199 16 16 16 16-7.199 16-16-7.199-16-16-16zm0 6c5.558 0 10 4.442 10 10s-4.442 10-10 10-10-4.442-10-10 4.442-10 10-10z'/%3E%3C/svg%3E"); width: 32px; height: 32px; display: inline-block; background-position: center; background-repeat: no-repeat; vertical-align: middle; margin: 0; line-height: 0.4; } .barcode-scanner-decision .aw-popup-content div { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; column-gap: 40px; } .barcode-scanner-decision .buttonLinks { flex: 1; min-width: 180px; } .loader { position:relative; color:transparent !important; } .loader:after { content:""; display: inline-block; width: 26px; height: 26px; vertical-align: text-bottom; border: 2px solid #333333; border-right-color: transparent; border-radius: 50%; animation: spinner-border .75s linear infinite; position: absolute; top: 5px; left: calc(50% - 20px); } @keyframes spinner-border { to { transform: rotate(360deg); } } Zahlungsmodalitäten Lieferdienst Blutanalysen Familie und Kind Pflege Team Karriere Kontakt try { const rezeptTopLi = document.querySelector('ul li.rezeptTop'); const erezeptLinkParent = document.querySelector('ul li a[href*="erezept"]')?.parentElement; if (rezeptTopLi && erezeptLinkParent) { rezeptTopLi.insertAdjacentElement('afterend', erezeptLinkParent); } } catch (e) {} ANGBEBOTEBESTELLUNG REZEPTEINREICHEN NOTDIENST ÖFFNUNGSZEITEN ANFAHRT TEAM Öffnungszeiten: Mo - Fr : 08:00 - 18:00 Uhrdurchgehend geöffnet   Samstag: 08:30 - 13:00 Uhr   0 29 61-96 61 00 0 29 61-96 61 030 apoteam@adler-apotheke-brilon.de // Terminbuchen Blutanalysebuchen Rezept hochladen E-Rezept einlösen Lieferdienst Notdienst Karriere Willkommens-Gutschein Sichern Sie sich zusätzlich 20% Rabatt auf Ihren ersten Einkauf. Mindestbestellwert 20€. Ausgenommen sind verschreibungspflichtige Medikamente und Spezialanfertigungen. Jetzt Registrieren Aktionen des Monats
  • [H3] GELOMYRTOL forte magensaftresistente Weichkapseln 20 St *
  • [H3] VOMEX A Dragees 50 mg überzogene Tabletten 20 St *
  • [H3] NASENSPRAY-ratiopharm Erwachsene kons.frei 10 ml *
  • [H3] ASPIRIN Complex Btl.m.Gran.z.Herst.e.Susp.z.Einn. 20 St *
  • [H3] THOMAPYRIN CLASSIC Schmerztabletten 20 St *
  • [H3] ACC akut 600 Brausetabletten 10 St *
  • [H3] NICORETTE Kaugummi 2 mg freshmint 105 St *
  • [H3] BEPANTHEN Augen- und Nasensalbe 5 g *

Bilder

Es konnten 41 Bilder auf dieser Webseite gefunden werden.

Die Bilder von adler-apotheke-brilon.de sollten nachgearbeitet werden: 8 ALT-Attribute fehlen. Sinnvolle ALT-Texte erklären, was auf den Bildern zu sehen ist, und machen den Inhalt robuster für SEO und Barrierefreiheit.

Text/HTML Verhältnis

Anteil : 0%

Das Text-zu-HTML-Verhältnis von adler-apotheke-brilon.de liegt nur bei 0% und damit unter dem empfohlenen Mindestwert von 15%. Mehr eigener, sichtbarer Inhalt würde der Seite helfen, ihr Thema klarer zu vermitteln.

Flash

Auf adler-apotheke-brilon.de wurde kein Flash gefunden. Das ist positiv, weil moderne Browser und Suchmaschinen mit aktuellen HTML-, CSS- und JavaScript-Lösungen deutlich besser umgehen.

IFrame

adler-apotheke-brilon.de verwendet keine IFrames. Dadurch liegen die wichtigsten Inhalte direkt im Dokument und sind für Suchmaschinen einfacher zu erfassen.

Eine klare Linkstruktur erleichtert Suchmaschinen das Crawlen, verteilt interne Relevanz und hilft Besuchern, wichtige Inhalte schnell zu finden.

URL Rewrite

Die Links von adler-apotheke-brilon.de enthalten Parameter und sind dadurch weniger sprechend. Klarere URL-Strukturen können die Verständlichkeit für Nutzer und Suchmaschinen verbessern.

Underscores in the URLs

adler-apotheke-brilon.de verwendet keine Unterstriche in den geprüften Links. Das unterstützt eine klare und übliche URL-Schreibweise.

In-page links

We found a total of 9 links including 2 link(s) to files

Anker Typ Natürlich
{{cartProduct.productName}} intern natürliche Links
- intern natürliche Links
Jetzt Registrieren intern natürliche Links
Aktionen des Monats intern natürliche Links
AGB extern natürliche Links
Widerrufsbelehrung extern natürliche Links
Datenschutz extern natürliche Links
Impressum extern natürliche Links
Barrierefreiheitserklärung intern natürliche Links

SEO Suchbegriffe

Die Suchbegriffsauswertung zeigt, welche Themen die Seite tatsächlich vermittelt und ob wichtige Begriffe in Inhalt und Seitenelementen konsistent vorkommen.

Suchbegriffswolke

Keywords Consistency

Suchbegriff Inhalt Seitentitel Suchbegriffe Seitenbeschreibung Überschriften

Benutzerfreundlichkeit

Gute Benutzerfreundlichkeit stärkt Vertrauen und erleichtert die Nutzung. Geprüft werden unter anderem URL, Favicon, Sprache und Druckdarstellung.

URL

Domain : adler-apotheke-brilon.de

Länge : 24

Favoriten Icon

Ein Favicon ist für adler-apotheke-brilon.de vorhanden. Das ist ein kleines, aber sichtbares Signal für Markenwirkung und Nutzerorientierung.

Druckeigenschaften

adler-apotheke-brilon.de hat offenbar keine druckfreundliche CSS-Variante. Wenn Inhalte häufig ausgedruckt werden, lohnt sich eine angepasste Print-Darstellung.

Sprache

adler-apotheke-brilon.de deklariert die Sprache als de. Das hilft Browsern, Suchmaschinen und Hilfstechnologien bei Aussprache, Darstellung und regionaler Einordnung.

Dublin Core

adler-apotheke-brilon.de verzichtet auf Dublin-Core-Metadaten. Falls die Seite stark dokumenten- oder publikationsorientiert ist, könnten solche Angaben ergänzt werden.

Dokument

Sauberes HTML, eine korrekte Zeichencodierung und moderne Standards verbessern Kompatibilität, Zugänglichkeit und die zuverlässige Verarbeitung der Seite.

Doctype

HTML 5

Verschlüsselung

Der Zeichensatz von adler-apotheke-brilon.de ist angegeben: UTF-8. Dadurch sinkt das Risiko fehlerhafter Zeichenanzeige in Browsern und Auswertungssystemen.

W3C Validität

Fehler : 0

Warnungen : 0

E-Mail Datenschutz

Auf adler-apotheke-brilon.de wurde mindestens eine E-Mail-Adresse im Klartext gefunden. Solche Angaben können von Bots gesammelt werden. Mit diesem kostenlosen Werkzeug lassen sich Adressen besser schützen.

Veraltetes HTML

Im Quelltext von adler-apotheke-brilon.de wurden keine deprecated HTML-Tags erkannt. Aktuelle HTML-Strukturen sind robuster für Browser und Validatoren.

Tipps zur Webseitengeschwindigkeit

adler-apotheke-brilon.de nutzt keine verschachtelten Tabellen. Das macht Layout und Quelltext leichter wartbar und besser zugänglich.
adler-apotheke-brilon.de nutzt CSS direkt in HTML-Elementen. Eine Auslagerung in CSS-Dateien kann den Quelltext übersichtlicher und besser wartbar machen.
Die Anzahl der CSS-Dateien bei adler-apotheke-brilon.de wirkt unkritisch. Wenige, sinnvoll gebündelte Stylesheets erleichtern die technische Optimierung.
Die JavaScript-Anzahl von adler-apotheke-brilon.de ist unauffällig. Eine schlanke Skriptstruktur hilft besonders auf mobilen Geräten.
adler-apotheke-brilon.de nutzt gzip-Komprimierung. Dadurch können HTML, CSS und JavaScript kleiner übertragen werden, was die Ladezeit verbessern kann.

Mobile

Mobile Optimierung ist wichtig, weil viele Besucher Smartphones nutzen. Viewport, Icons und ungeeignete Technologien beeinflussen Darstellung und Bedienbarkeit.

Mobile Optimierung

Apple Icon
META Viewport Tag
Flash Inhalt

Optimierung

Sitemap, robots.txt, Komprimierung und Analysesysteme beeinflussen, wie effizient eine Website gecrawlt, ausgeliefert und gezielt weiterentwickelt werden kann.

XML-Sitemap

adler-apotheke-brilon.de stellt eine XML-Sitemap bereit. Das hilft Suchmaschinen, wichtige URLs schneller zu entdecken und Änderungen strukturierter zu erfassen.

https://www.adlerapotheke-brilon.de/

Robots.txt

http://adler-apotheke-brilon.de/robots.txt

adler-apotheke-brilon.de enthält eine robots.txt-Datei. Damit lassen sich Crawler-Regeln und der Hinweis auf die Sitemap zentral steuern.

Analytics

Fehlt

Für adler-apotheke-brilon.de wurde kein Analyse-Tool erkannt. Ohne Webanalyse bleibt schwer nachvollziehbar, wie Besucher die Seite tatsächlich nutzen.

PageSpeed Insights

PageSpeed Insights bewertet Leistung, Barrierefreiheit, bewährte Verfahren und SEO für Desktop und Mobilgeräte und macht technische Bremsen sichtbar.


Gerät
Kategorien

Website-Überprüfung

Website-Überprüfung ist ein kostenloses SEO Werkzeug zur Analyse Ihrer Webseite