Hier der vollständige Code. Geändert ist nur resolveItemUrl(), dazu kommt die neue Hilfsfunktion languagePrefix(). Die Sprache wird aus dem URL-Präfix der Druckseite übernommen, z. B. /es/. html
(function () { function textOf(el) { return (el && el.textContent || "").replace(/\s+/g, " ").trim(); } // Sprachpräfix der aktuellen Seite ermitteln, z. B. "/es" bei /es/druckseite?item=123 // Standardsprache (ohne Präfix) liefert "". function languagePrefix() { var m = window.location.pathname.match(/^\/([a-z]{2})(?=\/|$)/i); return m ? "/" + m[1].toLowerCase() : ""; } function resolveItemUrl() { var match = window.location.search.match(/[?&]item=(\d+)/); if (!match) { return null; } return window.location.origin + languagePrefix() + "/a-" + match[1] + "/"; } function loadAccordion() { var url = resolveItemUrl(); if (!url) { return Promise.resolve(null); } return new Promise(function (resolve, reject) { var xhr = new XMLHttpRequest(); xhr.open("GET", url, true); xhr.onload = function () { if (xhr.status < 200 || xhr.status >= 400) { reject(new Error("item page " + xhr.status)); return; } var doc = new DOMParser().parseFromString(xhr.responseText, "text/html"); resolve(doc.querySelector(".phywe-item-accordion")); }; xhr.onerror = function () { reject(new Error("item page network error")); }; xhr.send(); }); } function parseItemBlocks(scope, withQuantity) { if (!scope) { return []; } var rows = scope.querySelectorAll(".itemslist .row.itemblocks"); var items = []; for (var i = 0; i < rows.length; i++) { var cols = rows[i].children; if (!cols.length) { continue; } var nameLink = cols[0].querySelector("a"); var numberLink = cols[1] ? cols[1].querySelector("a") : null; var item = { name: textOf(nameLink || cols[0]), mappedTo: textOf(numberLink) }; if (withQuantity && cols[2]) { var qty = parseInt(textOf(cols[2]).replace(/[^\d]/g, ""), 10); item.quantity = isNaN(qty) ? textOf(cols[2]) : String(qty); } if (item.name) { items.push(item); } } return items; } function fillTable(tableId, items, withQuantity) { var table = document.getElementById(tableId); if (!table || !items.length) { return; } var tbody = table.querySelector("tbody"); for (var i = 0; i < items.length; i++) { var tr = document.createElement("tr"); var nameTd = document.createElement("td"); nameTd.style.width = "80%"; nameTd.textContent = items[i].name; tr.appendChild(nameTd); var numberTd = document.createElement("td"); numberTd.textContent = items[i].mappedTo; tr.appendChild(numberTd); if (withQuantity) { var qtyTd = document.createElement("td"); qtyTd.textContent = items[i].quantity || ""; tr.appendChild(qtyTd); } tbody.appendChild(tr); } var wrapper = table.parentElement; while (wrapper && wrapper.className.indexOf("printtablediv") === -1) { wrapper = wrapper.parentElement; } if (wrapper) { wrapper.style.display = ""; } } function stepTitle(stepEl) { if (!stepEl) { return ""; } var titleEl = stepEl.querySelector(".card-header button div") || stepEl.querySelector(".card-header button"); return textOf(titleEl); } function setHeadline(tableId, title) { var headline = document.querySelector("#" + tableId + " .printtableheadline"); if (headline && title) { headline.textContent = title; } } function parseMedia(scope) { if (!scope) { return []; } var rows = scope.querySelectorAll(".itemslist .row.itemblocks"); var items = []; for (var i = 0; i < rows.length; i++) { var cols = rows[i].children; if (!cols.length) { continue; } var nameLink = cols[0].querySelector("a"); var fileLink = cols[1] ? cols[1].querySelector("a") : null; var item = { name: textOf(nameLink || cols[0]), mappedTo: textOf(fileLink || cols[1]), quantity: cols[2] ? textOf(cols[2]) : "" }; if (item.name) { items.push(item); } } return items; } function fillFromAccordion(accordion) { if (!accordion) { return; } var versucheStep = accordion.querySelector('[data-step="versuche"]'); var versuche = parseItemBlocks(versucheStep, false); setHeadline("print-versuche", stepTitle(versucheStep)); fillTable("print-versuche", versuche, false); var lieferumfangStep = accordion.querySelector('[data-step="lieferumfang"]'); var lieferumfang = parseItemBlocks(lieferumfangStep, true); fillTable("print-lieferumfang", lieferumfang, true); var zubehoer = accordion.querySelector('[data-step="zubehoer"]'); var sections = zubehoer ? zubehoer.querySelectorAll(".card-body") : []; var notwendig = []; var empfohlen = []; for (var i = 0; i < sections.length; i++) { var items = parseItemBlocks(sections[i], false); if (sections[i].querySelector(".text-red, .icon-warning-black")) { notwendig = items; } else if (sections[i].querySelector(".text-green, .icon-Mehrwert_black")) { empfohlen = items; } } fillTable("print-zubehoer-notwendig", notwendig, false); fillTable("print-zubehoer-empfohlen", empfohlen, false); var mediaStep = accordion.querySelector('[data-step="media"]'); var media = parseMedia(mediaStep); setHeadline("print-media", stepTitle(mediaStep)); fillTable("print-media", media, true); } function start() { var itemUrl = resolveItemUrl(); if (!itemUrl) { setTimeout(function () { window.print(); }, 2000); return; } loadAccordion() .then(function (accordion) { fillFromAccordion(accordion); }) .catch(function (err) { if (window.console && console.warn) { console.warn("Accordion konnte nicht geladen werden:", itemUrl, err); } }) .then(function () { setTimeout(function () { window.print(); }, 500); }); } if (document.readyState === "loading") { document.addEventListener("DOMContentLoaded", start); } else { start(); } })();
 

Données techniques


Article n° : LIE-72000

Fonction et Applications

72000 Histologie humaine, grand assortiment Partie II. - 50 lames de microscope - 1. palais mou, humain, c.t. 2. tissu adipeux, humain, c.t. coloré pour la graisse 3. cartilage fibreux blanc, disque intervertébral humain, c.t. 4. Muscle strié (squelettique), humain, c.t. 5. Os spongieux (spongieux), humain, c.t. 6. Développement osseux, c.l. verticale de la calotte crânienne du fœtus 7. Développement osseux, c.l. du doigt du fœtus 8. Articulation du fœtus humain, c.l. 9. Dent humaine, c.t. de la couronne 10. Dent humaine, c.l. complète 11. Développement d'une dent de fœtus humain, c.l. 12. Aorte, humaine, c.t. de routine colorée 13. Trachée d'un fœtus humain, c.t. 14. Thymus d'un enfant humain, c.t. 15. Glande parathyroïde (Gl. parathyreoidea), humain, c.t. 16. Amygdale (Tonsilla palatina), humain, c.t. 17. Glande parotide (Gl. parotis), c.t. humaine 18. Glande sous-maxillaire (Gl. submandibularis), c.t. humaine 19. Estomac, région fundique, c.t. humain 20. Estomac, région cardiaque, c.t. humain 21. Jéjunum, c.t. humain 22. Intestin grêle (Duodénum), c.t. coloration des cellules gobelets, PAS-HE 23. Appendice vermiforme, humain, c.t. 24. Rectum, humain, c.t. 25. Vésicule biliaire, humain, c.t. 26. Foie de fœtus humain, c.t., développement des cellules sanguines 27. Uréthre, humain, c.t. 28. Vésicule séminale (Gl. vesiculosa), humain, c.t. 29. Cordon spermatique (Ductus deferens), humain, c.t. 30. Prostate, humain, c.t. 31. Frottis de sperme, humain, c.t. 32. Corpus luteum dans l'ovaire humain, c.t. 33. Vagin, humain, c.t. 34. Cortex cérébral, humain, c.t. argenté (Golgi ou Palmgren) 35. Cortex cérébral humain, c.t., coloré pour les cellules neurogliales après Held 36. Cervelet, humain, c.t. argenté (Golgi ou Palmgren) 37. Thalamus, humain, coloré d'après Klüver - Barrera 38. Medulla oblongata, humain, c.t. coloration de routine 39. Moelle épinière, humain, c.t. argenté (Golgi ou Palmgren) 40. Ganglion sympathique, humain, c.t., coloration de routine 41. Nerf périphérique, humain, c.t. 42. Nerf optique, c.t. humain 43. Cornée de l'œil, humain, c.t. 44. Paupière, humain, c.t. 45. Peau du bout du doigt, humain, c.l. verticale 46. Cuir chevelu, humain, c.l. horizontale montrant les follicules pileux, c.t. 47. Développement des ongles, c.l. sagittale de l'extrémité du doigt d'un fœtus humain 48. Chromosomes humains dans un frottis provenant d'une culture de sang, homme 49. Chromosomes humains dans un frottis d'une culture de sang, femelle 50. Corps de Barr (chromatine sexuelle humaine) dans un frottis d'épithélium squameux féminin *

Les micro-lames sont fournies dans une boîte à lames.

PHYWE Systeme GmbH & Co. KG
Robert-Bosch-Breite 10 – 37079 Göttingen – Deutschland
www.phywe.com
Contact