var body = document.body; body.className += " u-body u-xl-mode"; body.style.cssText += " "; var dataBg = ''; if (dataBg) { body.setAttribute('data-bg', dataBg); } Littérature {module id="126"} (function($){ $(document).ready(function(){ $('#eshop_result').hide(); $('input.product_search').val(''); $(window).click(function(){ $('#eshop_result').hide(); }) function search() { var query_value = $('input.product_search').val(); $('b#search-string').html(query_value); if(query_value !== '') { $('.product_search').addClass('eshop-loadding'); $.ajax({ type: "POST", url: $('#live_site').val() + "index.php?option=com_eshop&view=search&format=raw&layout=ajax&lang=fr", data: '&keyword=' + query_value + '&image_width=' + $('#image_width').val() + '&image_height=' + $('#image_height').val() + '&category_ids=' + $('#category_ids').val() + '&description_max_chars=' + $('#description_max_chars').val(), cache: false, success: function(html){ $("ul#eshop_result").html(html); $('.product_search').removeClass('eshop-loadding'); } }); } return false; } $('#eshop-search').on('keyup', '#keyword', function(e) { //Set Timeout clearTimeout($.data(this, 'timer')); // Set Search String var search_string = $(this).val(); // Do Search if (search_string == '') { $('.product_search').removeClass('eshop-loadding'); $("ul#eshop_result").slideUp(); } else { $("ul#eshop_result").slideDown('slow'); $(this).data('timer', setTimeout(search, 100)); }; }); }); })(jQuery); CATEGORIES - Tous les produits - Bilingue - Coco B éditions - Autres éditions - En stock - Nouveautés - À paraître - Offres spéciales Cher pygmalion 14.90€ Prix HT: 14.12€ Une histoire sentimentale d’aujourd’hui destinée à un lectorat jeune sur fond de réseaux sociaux. Un roman court écrit par une jeune autrice, journaliste, prête plume et photographe. article ajouté au panier. Quickview (function () { // Move the shared modal to document.body so Bootstrap can position it correctly // regardless of the container it was rendered in (slider, AJAX-injected list, etc.). // Also remove any stale copy left by a previous AJAX render. var stale = document.querySelector('body > #eshop-quickview-modal-shared'); if (stale) stale.remove(); var modal = document.getElementById('eshop-quickview-modal-shared'); if (modal && modal.parentNode !== document.body) { document.body.appendChild(modal); } // Register the global click handler only once per page load. // The dataset flag persists on the element across AJAX container replacements, // preventing duplicate listeners when quickview_init.php is re-rendered in AJAX responses. if (document.documentElement.dataset.eshopQuickviewInit) return; document.documentElement.dataset.eshopQuickviewInit = '1'; document.addEventListener('click', function (e) { var btn = e.target.closest('.eshop-quickview-button[data-quickview-url]'); if (!btn) return; e.preventDefault(); var sharedModal = document.getElementById('eshop-quickview-modal-shared'); if (!sharedModal) return; if (typeof window.bootstrap === 'undefined') return; // textContent is safe against XSS (treats value as plain text, not HTML) var titleEl = sharedModal.querySelector('.modal-title'); if (titleEl) titleEl.textContent = btn.getAttribute('data-quickview-name') || ''; var url = btn.getAttribute('data-quickview-url') || ''; // Block non-relative/non-http URL schemes to prevent javascript: or data: injection if (url && /^(javascript|data|vbscript):/i.test(url)) return; var iframe = document.getElementById('eshop-quickview-iframe'); if (iframe) iframe.src = url; window.bootstrap.Modal.getOrCreateInstance(sharedModal).show(); }); document.addEventListener('hidden.bs.modal', function (e) { if (e.target && e.target.id === 'eshop-quickview-modal-shared') { var iframe = document.getElementById('eshop-quickview-iframe'); if (iframe) iframe.src = 'about:blank'; } }); }()); 59