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(); } })();
 

Datos técnicos


Histología humana, tinción hematoxilina-eosina

Nº de artículo LIE-9000

Funciones y uso

9000 Histología Humana Normal, Set Básico ( posible a petición teñido en hermosa y clara Hematoxilina-Eosina (HE) ), 40 portaobjetos. - 40 portaobjetos - En la elaboración de la serie se ha utilizado básicamente material de primera calidad, fijado histológicamente, para la preparación de los portaobjetos. El grosor de corte de las secciones del microtomo suele ser de 6 a 8 mm. El uso de métodos de tinción especiales garantiza una representación clara y multicolor de todas las estructuras tisulares. Esta serie de portaobjetos ocupa un lugar especial tanto por la calidad del material original como por el cuidado de la preparación. 1. 1. Epitelio escamoso, humano, células aisladas 3. Cartílago hialino, c.t. humano 4. Hueso compacto, c.t. humano 5. Músculo estriado, c.l. humano 6. Músculo cardíaco, c.l. y c.t. humano 7. Arteria, c.t. humano 8. Vena, c.t. humano 9. Pulmón, c.t. humano 10. Tejido conectivo areolar, c.t. humano Manchas de sangre, humano 11. 11. Bazo, c.t. humano 12. Glándula tiroidea, c.t. humano Glándula tiroidea, c.t. humana 13. Glándula del timo, c.t. humana 14. Lengua, c.t. humana 15. Diente, c.t. humana 16. Parótida, glándula humana c.t. 17. Esófago, humano c.t. 18. Estómago, humano, región fúndica c.t. 19. Duodeno, humano c.t. 19. Duodeno, c.t. humana (intestino delgado) 20. Colon, humano c.t. (intestino grueso) 21. Páncreas, humano c.t. Páncreas, c.t. humano 22. Hígado, c.t. humano 23. Apéndice vermiforme, c.t. humano 23. Apéndice vermiforme, c.t. humano 24. Riñón, c.t. humano 25. Glándula suprarrenal, c.t. humana Ovario, c.t. humano 27. 27. Útero, c.t. humano 28. Placenta, c.t. humano 28. Placenta, c.t. humana 29. Testículo, c.t. humano 30. Epidídimo, c.t. humano 30. Epidídimo, c.t. humano 31. Cerebro, c.t. humano 31. Cerebro, c.t. humano 32. Cerebelo, c.t. humano 33. Médula espinal, c.t. humano Médula espinal, c.t. humano 34. Ganglio simpático, c.t. humano 35. 35. Piel de la palma de la mano, c.t. humana Cuero cabelludo, humano, l.s. de los folículos pilosos 37. 37. Cuero cabelludo, humano, c.t. de los folículos pilosos 38. Retina, humana c.t. Retina, humana, c.t. 39. Punta de dedo de feto con desarrollo de uñas c.l. 40. Glándula mamaria, humana c.t. Glándula mamaria

, c.t. humana

Los microportaobjetos se suministran en una caja de portaobjetos.

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