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


Nº de artículo LIE-2200

Funciones y uso

2200 Invertebrata, set suplementario. - 50 preparaciones microscópicas - Complemento del juego nº 2100 - 1. Radiolarios, especies mixtas 2. Foraminíferos, especies mixtas 2. Foraminíferos, especies mixtas 3. Ceratium, dinoflagelados Ceratium, dinoflagelados 4. Trypanosoma, causante de la enfermedad del sueño, frotis de sangre 5. 5. Plasmodium, parásito de la malaria, frotis de sangre Eimeria stiedae, en frotis de hígado de conejo con parásitos 7. Spongilla, esponja de agua dulce, gemmulae (cuerpos de invierno) 8. Hydra, en c.t. del cuerpo 9. Obelia hydroid, c.m. de la colonia 10. 10. Obelia medusa, medusa. c.m. 11. Actinia, anémona de mar Actinia, anémona de mar, c.t. espécimen joven 12. 12. Fasciola hepatica, chiripa del hígado, c.t. del cuerpo Fasciola, óvulos, c.t. 14. Ascaris, lombriz redonda, c.t. de la hembra en la región de las gónadas 15. Ascaris, c.t. del macho en la región de las gónadas 16. Lumbricus, lombriz de tierra, c.t. de la región anterior con las gónadas 17. Lumbricus, frotis de esperma 18. Hirudo medicinalis, sanguijuela, c.t. del cuerpo 19. 19. Sagitta, gusano de la flecha, espécimen entero, c.m. Astacus, cangrejo de río, branquias c.t. 21. Astacus, hígado c.t. 22. Astacus, testículo c.t. mostrando espermatogénesis 23. Astacus, ovario c.t. mostrando óvulos en desarrollo 24. Astacus, intestino c.t. 25. Araña, abdomen con órganos internos c.t. 26. Dermanyssus gallinae, ácaro del pollo c.t. 27. Pieris, mariposa, cabeza y partes de la boca c.m. 28. 28. Vespa, avispa, partes bucales que pican c.m. 29. Carabus, escarabajo de tierra, partes bucales que pican c.m. 30. Culex pipiens, mosquito, partes bucales perforantes y chupadoras c.m. 31. Melolontha, escarabajo de los gallos, antena p.m. 32. Apis mellifica, escarabajo de la miel 32. Apis mellifica, abeja melífera, pata anterior con cepillo de ojos m.e. Apis mellifica, pata posterior con cesta de polen m.e. 34. Pieris, mariposa, parte del ala con escamas p.m. 35. 35. Apis mellifica, córnea del ojo p.m. 36. Apis mellifica, aguijón con saco venenoso c.m. Culex pipiens, mosquito, c.t. del abdomen 38. Apis mellifica, abeja melífera, cabeza con ojos compuestos c.t. 39. Apis mellifica, abdomen de obrera c.t. 40. 40. Ctenocephalus, pulga del perro, m.e. de un adulto 41. Chironomus, mosquito, larva c.m. 42. Bombyx mori, seda. Bombyx mori, gusano de seda, c.t. de oruga, glándulas hiladoras 43. 43. Helix, caracol, glándula hermafrodita (ovotestis) c.t. Hélice, caracol, hígado c.t. 45. Helix, caracol, ojo c.t. 46. 46. Mya arenaria, almeja, branquias c.t. y c.l. Asterias, estrella de mar, sección horizontal de un ejemplar joven 48. Psammechinus, erizo de mar, larva plútea c.m. 49. Branchiostoma lanceolatum (Amphioxus), c.t. del cuerpo con testículos 50.

Branchiostoma , c.t. del cuerpo con

ovarios

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
Contact