(function () { 'use strict'; /* ========================================================= SETTINGS ========================================================= */ const CLOSE_DELAY = 350; const hoverDevice = window.matchMedia( '(hover: hover) and (pointer: fine)' ); /* ========================================================= GLOBAL STATE ========================================================= */ let portal = null; let activeTrigger = null; let activeSelect = null; let activeParent = null; let closeTimer = null; let isHoveringTrigger = false; let isHoveringPortal = false; /* ========================================================= SAFE EVENT TARGET ========================================================= */ function getEventElement(event) { if (event.target instanceof Element) { return event.target; } if ( event.target && event.target.parentElement instanceof Element ) { return event.target.parentElement; } return null; } /* ========================================================= COOKIE HELPER ========================================================= */ function getCookie(name) { const cookies = document.cookie.split(';'); for (let i = 0; i < cookies.length; i++) { const cookie = cookies[i].trim(); if (cookie.indexOf(name + '=') === 0) { return decodeURIComponent( cookie.substring(name.length + 1) ); } } return null; } /* ========================================================= CREATE ONE GLOBAL PORTAL ========================================================= */ function createPortal() { /* * Remove old portal copies from previous code. */ document .querySelectorAll('.wmc-portal-dropdown') .forEach(function (oldPortal) { oldPortal.remove(); }); portal = document.createElement('div'); portal.className = 'wmc-portal-dropdown'; portal.setAttribute( 'role', 'listbox' ); portal.setAttribute('hidden', ''); portal.setAttribute('inert', ''); portal.style.setProperty( 'display', 'none', 'important' ); portal.style.setProperty( 'visibility', 'hidden', 'important' ); portal.style.setProperty( 'opacity', '0', 'important' ); portal.style.setProperty( 'pointer-events', 'none', 'important' ); portal.style.setProperty( 'z-index', '2147483647', 'important' ); document.body.appendChild(portal); /* * Keep dropdown open on desktop while * cursor is inside the portal. */ portal.addEventListener( 'mouseenter', function () { if (!hoverDevice.matches) { return; } isHoveringPortal = true; cancelHide(); } ); portal.addEventListener( 'mouseleave', function () { if (!hoverDevice.matches) { return; } isHoveringPortal = false; scheduleHide(); } ); } /* ========================================================= PREPARE ONE CURRENCY SELECT ========================================================= */ function prepareCurrencySelect(select) { if (!(select instanceof HTMLSelectElement)) { return; } const container = select.closest('.wmc-currency'); if (!container) { return; } container.classList.add('transformed'); /* * Find existing trigger. * * If Elementor cloned the markup, this trigger * may have no old event listeners. That's fine, * because this new version uses delegated events. */ let trigger = container.querySelector( '.wmc-custom-switcher' ); /* * Create trigger if it does not exist. */ if (!trigger) { trigger = document.createElement('div'); trigger.className = 'wmc-custom-switcher'; trigger.setAttribute( 'role', 'button' ); trigger.setAttribute( 'tabindex', '0' ); trigger.setAttribute( 'aria-haspopup', 'listbox' ); trigger.setAttribute( 'aria-expanded', 'false' ); trigger.innerHTML = `
`; container.appendChild(trigger); } /* * Determine current currency. */ let currentValue = select.value; const savedCurrency = getCookie('wmc_current_currency'); if (savedCurrency) { const validSavedCurrency = Array.from(select.options).some( function (option) { return ( option.value === savedCurrency ); } ); if (validSavedCurrency) { currentValue = savedCurrency; } } const currentOption = Array.from(select.options).find( function (option) { return ( option.value === currentValue ); } ); const label = trigger.querySelector( '.wmc-current-label' ); if (label && currentOption) { label.textContent = currentOption .textContent .trim(); } /* * Debug marker only. * * IMPORTANT: * We do NOT use this anymore to decide * whether mobile clones should initialize. */ select.dataset.wmcPortalInitialized = '1'; } /* ========================================================= PREPARE ALL CURRENCY SELECTS ========================================================= */ function prepareAllCurrencySelects() { document .querySelectorAll( '.wmc-select-currency-js' ) .forEach( prepareCurrencySelect ); } /* ========================================================= GET SELECT FROM TRIGGER ========================================================= */ function getSelectFromTrigger(trigger) { if (!trigger) { return null; } const container = trigger.closest('.wmc-currency'); if (!container) { return null; } return container.querySelector( '.wmc-select-currency-js' ); } /* ========================================================= BUILD PORTAL OPTIONS ========================================================= */ function buildPortal(select) { if (!portal || !select) { return; } portal.innerHTML = ''; let currentValue = select.value; const savedCurrency = getCookie('wmc_current_currency'); if ( savedCurrency && Array.from(select.options).some( function (option) { return ( option.value === savedCurrency ); } ) ) { currentValue = savedCurrency; } Array.from(select.options).forEach( function (option) { const item = document.createElement('a'); item.href = '#'; item.className = 'wmc-currency-option'; item.dataset.currency = option.value; item.setAttribute( 'role', 'option' ); if ( option.value === currentValue ) { item.classList.add( 'is-current' ); item.setAttribute( 'aria-selected', 'true' ); } else { item.setAttribute( 'aria-selected', 'false' ); } const name = document.createElement('span'); name.className = 'wmc-currency-name'; name.textContent = option.textContent.trim(); item.appendChild(name); portal.appendChild(item); } ); } /* ========================================================= POSITION PORTAL ========================================================= */ function updatePosition() { if ( !portal || !activeTrigger || !document.body.contains(activeTrigger) ) { return; } const rect = activeTrigger.getBoundingClientRect(); if ( rect.width <= 0 || rect.height window.innerWidth - 5 ) { left = Math.max( 5, window.innerWidth - width - 5 ); } portal.style.setProperty( 'position', 'fixed', 'important' ); portal.style.setProperty( 'top', (rect.bottom - 1) + 'px', 'important' ); portal.style.setProperty( 'left', left + 'px', 'important' ); portal.style.setProperty( 'width', width + 'px', 'important' ); portal.style.setProperty( 'min-width', width + 'px', 'important' ); portal.style.setProperty( 'max-width', width + 'px', 'important' ); portal.style.setProperty( 'z-index', '2147483647', 'important' ); } /* ========================================================= TIMER HELPERS ========================================================= */ function cancelHide() { if (closeTimer !== null) { clearTimeout(closeTimer); closeTimer = null; } } function scheduleHide() { cancelHide(); closeTimer = setTimeout( function () { if ( !isHoveringTrigger && !isHoveringPortal ) { closePortal(); } }, CLOSE_DELAY ); } /* ========================================================= OPEN PORTAL ========================================================= */ function openPortal(trigger) { if (!trigger || !portal) { return; } const select = getSelectFromTrigger(trigger); if (!select) { return; } /* * Close visual state of previous trigger. */ if ( activeTrigger && activeTrigger !== trigger ) { activeTrigger.classList.remove( 'is-open' ); activeTrigger.setAttribute( 'aria-expanded', 'false' ); const previousParent = activeTrigger.closest( '.currency-parent-trigger' ); if (previousParent) { previousParent.classList.remove( 'currency-dropdown-open' ); } } activeTrigger = trigger; activeSelect = select; activeParent = trigger.closest( '.currency-parent-trigger' ); cancelHide(); buildPortal(select); updatePosition(); portal.classList.add( 'active' ); trigger.classList.add( 'is-open' ); if (activeParent) { activeParent.classList.add( 'currency-dropdown-open' ); } trigger.setAttribute( 'aria-expanded', 'true' ); /* * Remove accessibility hiding. */ portal.removeAttribute( 'hidden' ); portal.removeAttribute( 'inert' ); /* * FORCE VISIBLE. * * This intentionally overrides conflicting * Elementor/mobile CSS. */ portal.style.setProperty( 'display', 'block', 'important' ); portal.style.setProperty( 'visibility', 'visible', 'important' ); portal.style.setProperty( 'opacity', '1', 'important' ); portal.style.setProperty( 'pointer-events', 'auto', 'important' ); portal.style.setProperty( 'z-index', '2147483647', 'important' ); } /* ========================================================= CLOSE PORTAL ========================================================= */ function closePortal() { cancelHide(); if (portal) { portal.classList.remove( 'active' ); portal.style.setProperty( 'display', 'none', 'important' ); portal.style.setProperty( 'visibility', 'hidden', 'important' ); portal.style.setProperty( 'opacity', '0', 'important' ); portal.style.setProperty( 'pointer-events', 'none', 'important' ); portal.setAttribute( 'hidden', '' ); portal.setAttribute( 'inert', '' ); } if (activeTrigger) { activeTrigger.classList.remove( 'is-open' ); activeTrigger.setAttribute( 'aria-expanded', 'false' ); } if (activeParent) { activeParent.classList.remove( 'currency-dropdown-open' ); } activeTrigger = null; activeSelect = null; activeParent = null; isHoveringTrigger = false; isHoveringPortal = false; } /* ========================================================= SELECT CURRENCY ========================================================= */ function selectCurrency(item) { if ( !item || !activeSelect ) { return; } const value = item.dataset.currency; if (!value) { return; } /* * Preserve references BEFORE closing. */ const select = activeSelect; const trigger = activeTrigger; const selectedOption = Array.from(select.options).find( function (option) { return ( option.value === value ); } ); if (!selectedOption) { return; } /* * Update original select. */ select.value = value; /* * Update visible label. */ if (trigger) { const label = trigger.querySelector( '.wmc-current-label' ); if (label) { label.textContent = selectedOption .textContent .trim(); } } /* * Save selected currency. */ document.cookie = 'wmc_current_currency=' + encodeURIComponent(value) + '; path=/; SameSite=Lax'; /* * Close first. */ closePortal(); /* * Trigger WooCommerce Multi Currency plugin. */ select.dispatchEvent( new Event( 'change', { bubbles: true } ) ); /* * jQuery compatibility. */ if (window.jQuery) { window.jQuery(select).trigger( 'change' ); } } /* ========================================================= DELEGATED CLICK DESKTOP + MOBILE + ELEMENTOR CLONES ========================================================= */ document.addEventListener( 'click', function (event) { const target = getEventElement(event); if (!target) { return; } /* * ----------------------------------------- * CURRENCY OPTION CLICK * ----------------------------------------- */ const currencyOption = target.closest( '.wmc-currency-option' ); if ( currencyOption && portal && portal.contains( currencyOption ) ) { event.preventDefault(); event.stopPropagation(); selectCurrency( currencyOption ); return; } /* * ----------------------------------------- * CURRENCY TRIGGER CLICK * ----------------------------------------- */ let trigger = target.closest( '.wmc-custom-switcher' ); /* * Also allow clicking/tapping the Elementor * currency parent/icon area. */ if (!trigger) { const parent = target.closest( '.currency-parent-trigger' ); if (parent) { trigger = parent.querySelector( '.wmc-custom-switcher' ); } } if (trigger) { event.preventDefault(); event.stopPropagation(); /* * Desktop: * hover normally handles opening, * but clicking keeps it open. */ if (hoverDevice.matches) { openPortal(trigger); return; } /* * Mobile / touch: * tap toggles dropdown. */ if ( activeTrigger === trigger && portal && portal.classList.contains( 'active' ) ) { closePortal(); } else { openPortal(trigger); } return; } /* * ----------------------------------------- * OUTSIDE CLICK * ----------------------------------------- */ if ( portal && !portal.contains(target) ) { closePortal(); } }, true ); /* ========================================================= DESKTOP DELEGATED HOVER ========================================================= */ document.addEventListener( 'mouseover', function (event) { if (!hoverDevice.matches) { return; } const target = getEventElement(event); if (!target) { return; } let hoverArea = target.closest( '.currency-parent-trigger' ); let trigger = null; if (hoverArea) { trigger = hoverArea.querySelector( '.wmc-custom-switcher' ); } else { trigger = target.closest( '.wmc-custom-switcher' ); hoverArea = trigger; } if (!trigger || !hoverArea) { return; } /* * Ignore movement between children * inside the same trigger. */ if ( event.relatedTarget instanceof Node && hoverArea.contains( event.relatedTarget ) ) { return; } isHoveringTrigger = true; cancelHide(); openPortal(trigger); }, true ); document.addEventListener( 'mouseout', function (event) { if (!hoverDevice.matches) { return; } const target = getEventElement(event); if (!target) { return; } let hoverArea = target.closest( '.currency-parent-trigger' ); let trigger = null; if (hoverArea) { trigger = hoverArea.querySelector( '.wmc-custom-switcher' ); } else { trigger = target.closest( '.wmc-custom-switcher' ); hoverArea = trigger; } if (!trigger || !hoverArea) { return; } /* * Ignore movement between children * inside same area. */ if ( event.relatedTarget instanceof Node && hoverArea.contains( event.relatedTarget ) ) { return; } isHoveringTrigger = false; scheduleHide(); }, true ); /* ========================================================= KEYBOARD SUPPORT ========================================================= */ document.addEventListener( 'keydown', function (event) { /* * Escape always closes. */ if (event.key === 'Escape') { closePortal(); return; } if ( event.key !== 'Enter' && event.key !== ' ' ) { return; } const target = getEventElement(event); if (!target) { return; } const trigger = target.closest( '.wmc-custom-switcher' ); if (!trigger) { return; } event.preventDefault(); if ( activeTrigger === trigger && portal && portal.classList.contains( 'active' ) ) { closePortal(); } else { openPortal(trigger); } } ); /* ========================================================= UPDATE POSITION ON SCROLL ========================================================= */ window.addEventListener( 'scroll', function () { if ( portal && portal.classList.contains( 'active' ) ) { updatePosition(); } }, { passive: true, capture: true } ); /* ========================================================= UPDATE POSITION ON RESIZE ========================================================= */ window.addEventListener( 'resize', function () { if ( portal && portal.classList.contains( 'active' ) ) { updatePosition(); } } ); /* ========================================================= ELEMENTOR / AJAX / OFF-CANVAS SUPPORT ========================================================= */ let mutationTimer = null; const observer = new MutationObserver( function (mutations) { let needsCheck = false; for ( let i = 0; i < mutations.length; i++ ) { if ( mutations[i].addedNodes && mutations[i].addedNodes.length ) { needsCheck = true; break; } } if (!needsCheck) { return; } if (mutationTimer) { clearTimeout( mutationTimer ); } mutationTimer = setTimeout( function () { prepareAllCurrencySelects(); }, 100 ); } ); /* ========================================================= START ========================================================= */ function start() { createPortal(); prepareAllCurrencySelects(); observer.observe( document.documentElement, { childList: true, subtree: true } ); } if ( document.readyState === 'loading' ) { document.addEventListener( 'DOMContentLoaded', start ); } else { start(); } })();

KONTO

[fk_cart_menu]

WARENKORB

document.addEventListener('DOMContentLoaded', function () { const container = document.querySelector( '.language-parent-trigger' ); if (!container) { return; } const list = container.querySelector( '.trp-switcher-dropdown-list' ); const overlay = container.querySelector( '.trp-shortcode-overlay' ); const arrow = container.querySelector( '.trp-shortcode-arrow' ); function show() { if (list) { list.style.display = 'block'; list.style.visibility = 'visible'; list.style.opacity = '1'; list.style.pointerEvents = 'auto'; list.removeAttribute('hidden'); list.removeAttribute('inert'); } if (overlay) { overlay.classList.add( 'trp-is-open', 'is-open' ); } if (arrow) { arrow.style.transform = 'rotate(180deg)'; } } function hide() { if (list) { list.style.display = 'none'; list.setAttribute('hidden', ''); list.setAttribute('inert', ''); } if (overlay) { overlay.classList.remove( 'trp-is-open', 'is-open' ); } if (arrow) { arrow.style.transform = 'rotate(0deg)'; } } container.addEventListener('mouseenter', show); container.addEventListener('mouseleave', hide); });
(function () { function init() { const cartDrawer = document.querySelector('.open-cart-drawer'); const cartToggleBtn = document.querySelector('#elementor-menu-cart__toggle_button'); if (!cartDrawer || !cartToggleBtn) { setTimeout(init, 300); return; } cartDrawer.addEventListener('click', function (e) { e.preventDefault(); e.stopPropagation(); const clickEvent = new MouseEvent('click', { bubbles: true, cancelable: true, view: window }); cartToggleBtn.dispatchEvent(clickEvent); }); } if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', init); } else { init(); } })();
[fk_cart_menu]
document.addEventListener('DOMContentLoaded', function(){ document.querySelectorAll('.custom-cart-hover').forEach(function(container){ container.addEventListener('click', function(){ const toggler = container.querySelector('.fkcart-mini-toggler'); if(toggler){ toggler.click(); // plugin ka original toggle fire kare } }); }); });
ABBYY Screenshot Reader

ABBYY Screenshot Reader

CHF 15.00
[ndpe_delivery_time]
Artikel-Nr.:Select Options
Hersteller-Nr:Select Options
Laufzeit:Select Options
Sprache(n):Select Options
Länderzone(n):Select Options

Trasforma il tuo modo di lavorare con ABBYY Screenshot Reader, un potente software che consente di catturare schermate e, grazie alla tecnologia avanzata di intelligenza artificiale, convertire rapidamente il testo in formato modificabile. Ideale per creare presentazioni o modificare documenti PDF, questa applicazione rappresenta una soluzione efficiente per le esigenze digitali quotidiane.

Acquistando questo prodotto, riceverai una licenza perpetua sotto forma di chiave elettronica, che garantisce l'accesso al convertitore immagine-testo per un utente. Disponibile per computer con sistemi operativi Windows, incluso Windows Server, ABBYY Screenshot Reader è offerto in versione multilingue con supporto per tedesco, inglese, francese, italiano e spagnolo.

ABBYY Screenshot Reader cattura con precisione le aree dello schermo—dall’intero desktop a un riquadro personalizzato. Le schermate si salvano in JPEG, PNG o BMP e l’interfaccia snella rende tutto rapidissimo.

Il punto forte è il flusso immagine-in-testo: con l’OCR IA trasformi il contenuto a schermo in formati modificabili. Tabelle, elenchi e layout restano in gran parte intatti—perfetti per riuso in documenti, email o chat.

Con 180+ lingue, avvio automatico e export verso DOC, XLS, TXT, CSV, ODT o RTF, Screenshot Reader è lo strumento compatto per lavorare sui contenuti dello schermo senza riscrivere.

Puoi trovare maggiori informazioni su questo prodotto qui.

ABBYY Screenshot Reader – requisiti di sistema

  • Sistemi operativi supportati: Microsoft Windows 7 / 8 / 8.1 / 10 / 11, Microsoft Windows Server 2008 R2, Microsoft Windows Server 2012, Microsoft Microsoft Windows Server 2012 R2, Microsoft Windows Server 2016,
  • PC con processore da 1 GHz o superiore
  • 1024 MB RAM
  • Spazio su disco: 600 MB per l'installazione tipica e 700 MB per l'esecuzione del programma
  • Schermo: Risoluzione minima di 1024×768 o superiore

Informazioni aggiuntive

[ffw_template dynamic_post=true]

Kundenbewertungen

FAQs

[ffw_template dynamic_post=true]
Scegli la tua valuta