UNPKG

neweb

Version:

[![NPM version][npm-image]][npm-url] [![Build Status][travis-image]][travis-url] [![Dependency Status][daviddm-image]][daviddm-url] [![Coverage percentage][coveralls-image]][coveralls-url] [![experimental](http://badges.github.io/stability-badges/dist/ex

33 lines (31 loc) 1.18 kB
import { IPage } from "./../typings"; class ClientPageMetaManager { public update(page: IPage) { document.title = page.title || ""; const head = document.getElementsByTagName("head")[0]; let isStartRemove = false; let metaEndNode: Node | undefined; for (const child of head.childNodes) { if (isStartRemove) { if (child.nodeType === 8 && child.nodeValue === "__page_meta_end__") { metaEndNode = child; break; } head.removeChild(child); continue; } if (child.nodeType === 8 && child.nodeValue === "__page_meta_start__") { isStartRemove = true; } } if (page.meta && page.meta.length > 0 && metaEndNode) { for (const meta of page.meta) { const metaEl = document.createElement("meta"); metaEl.name = meta.name; metaEl.content = meta.content; head.insertBefore(metaEl, metaEndNode); } } } } export default ClientPageMetaManager;