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


Fibra óptica para espectómetro

Nº de artículo 35620-00

Funciones y uso

El espectrómetro Pro LED es un instrumento especialmente desarrollado para la enseñanza de las ciencias. Es fácil de usar y su intuitivo software integrado proporciona un entorno único para visualizar, medir, comparar y evaluar los datos espectroscópicos. Dispone de un soporte de fibra de vidrio para tener las manos libres durante los experimentos. La luz que se va a examinar se acopla a través de la fibra óptica al espectrómetro, donde se dirige a una rejilla fija y así se descompone espectralmente. El espectro se registra mediante una matriz CCD, de modo que el espectro completo se registra de una sola vez, lo que permite detectar con fiabilidad incluso los cambios rápidos en un espectro. El software integrado en el aparato no requiere instalación y puede utilizarse inmediatamente después de conectar el espectrómetro a través de la interfaz USB con el PC. La alimentación se realiza a través de una fuente de alimentación de 12 V independiente, que se incluye en el suministro.

Ventajas

  • Robusta carcasa metálica
  • Mediciones rápidas de toda la gama espectral
  • Introducción flexible de la luz a investigar mediante una fibra óptica
  • Fuente de alimentación de 12 V para el espectrómetro y la fuente de luz incluida
  • Medición de los espectros de emisión y absorción en toda la gama espectral del visible y partes del IR y el UV
  • El software de medición integrado no requiere instalación

Equipo y especificaciones técnicas

Espectrómetro

  • Dimensiones (mm): 133 x 120 x 60
  • Masa 950 g
  • Estructura: Caja metálica
  • Rango espectral: 350 - 900 nm
  • Resolución: 1 nm
  • cCD lineal con 3600 px
  • Tiempo de integración: ajustable de 0,1 ms a 60 s
  • Tipo de montaje: Czerny Turner
  • Rejilla: 600 Líneas / mm
  • Conexión al ordenador: USB 2.0
  • Conexión de fibra óptica: SMA 905 - Fibra: 2 m + soporte de fibra en el poste
  • Software: integrado (no requiere instalación)
  • compatibilidad: Windows 2000 / XP / Vista / 7 / 8 (32 y 64 bits)

Especificación del contenedor de muestras:

  • Dimensiones (mm): 65 x 100 x 55
  • Masa: 250 g
  • Fuente de luz de baja tensión calibrada
  • Fuente de alimentación: 12 V
  • tamaño de la cubeta: 13 x 13 mm
  • 2 ranuras para filtros de tamaño 50 x 50 mm
  • 1 ranura para un chip D40 mm

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