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


Spectrophotomètre à fibre optique, 350 - 850 nm

Article n° : 35620-00

Fonction et Applications

Le spectromètre Pro LED est un instrument spécialement développé spécialement conçu pour l'enseignement des sciences. Il est facile à utiliser et son logiciel intégré intuitif offre un environnement unique pour visualiser, mesurer, comparer et évaluer les données spectroscopiques. Un support en fibre de verre est disponible pour garder les mains libres pendant les expériences. La lumière à examiner est couplée via la fibre optique au spectromètre, où elle est dirigée vers une grille fixe et ainsi décomposée spectralement. Le spectre est enregistré au moyen d'une matrice CCD, de sorte que le spectre complet est enregistré en une seule fois, ce qui permet de détecter de manière fiable même les changements rapides dans un spectre. Le logiciel intégré dans l'appareil ne nécessite aucune installation et peut être utilisé immédiatement après avoir connecté le spectromètre via l'interface USB avec le PC. L'alimentation est assurée par un bloc d'alimentation 12V séparé, inclus dans la livraison.

Avantages

  • Boîtier métallique robuste
  • Mesures rapides de toute la gamme spectrale
  • Introduction flexible de la lumière à étudier au moyen d'une fibre optique
  • Alimentation 12 V pour le spectromètre et la source lumineuse incluse
  • Mesure des spectres d'émission et d'absorption dans tout le domaine spectral visible et dans certaines parties de l'IR et de l'UV
  • Le logiciel de mesure intégré ne nécessite pas d'installation

Caractéristiques Techniques

Spectromètre

  • Dimensions (mm) : 133 x 120 x 60
  • Poids : 950 g
  • Structure : Boîtier métallique
  • Gamme spectrale : 350 - 900 nm
  • Résolution : 1 nm
  • cCD linéaire de 3600 px
  • Temps d'intégration : réglable de 0,1 ms à 60 s
  • Type d'assemblage : Czerny Turner
  • Grille : 600 lignes / mm
  • Connexion à l'ordinateur : USB 2.0
  • Connexion à la fibre optique : SMA 905 - Fibre : 2 m + Support de fibre sur poteau
  • Logiciel : embarqué (aucune installation requise)
  • compatibilité : Windows 2000 / XP / Vista / 7 / 8 (32 et 64 bits)

Spécification du conteneur d'échantillon :

  • Dimensions (mm) : 65 x 100 x 55
  • Masse : 250 g
  • Source lumineuse basse tension calibrée
  • Alimentation électrique : 12 V
  • taille de la cuvette : 13 x 13 mm
  • 2 fentes pour des filtres de taille 50 x 50 mm
  • 1 fente pour une puce D40 mm

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