From 984768fa85ff8ce2d5ef18311a013a66bfecfd42 Mon Sep 17 00:00:00 2001 From: Saul Shanabrook Date: Sun, 11 Nov 2018 10:23:05 -0500 Subject: [PATCH] Skip processing svg anchor elements Fixes https://github.com/jupyterlab/jupyterlab/issues/5589 by skipping processing of a elements that are not `HTMLAnchorElement`s, including those within SVG elements. Currently, if you have a `a` element inside an SVG element it will break HTML rendering since that element does not have a `href` like other `a` elements do. --- packages/rendermime/src/renderers.ts | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/packages/rendermime/src/renderers.ts b/packages/rendermime/src/renderers.ts index 61fb275ca931..d7cabcd03acc 100644 --- a/packages/rendermime/src/renderers.ts +++ b/packages/rendermime/src/renderers.ts @@ -628,15 +628,21 @@ namespace Private { // Handle anchor elements. let anchors = node.getElementsByTagName('a'); for (let i = 0; i < anchors.length; i++) { - let path = anchors[i].href || ''; + const el = anchors[i]; + // skip when processing a elements inside svg + // which are of type SVGAnimatedString + if (!(el instanceof HTMLAnchorElement)) { + continue; + } + let path = el.href; const isLocal = resolver && resolver.isLocal ? resolver.isLocal(path) : URLExt.isLocal(path); if (isLocal) { - anchors[i].target = '_self'; + el.target = '_self'; } else { - anchors[i].target = '_blank'; + el.target = '_blank'; } }