浏览代码

Clean up multiple urls and handling of external links

Steven Silvester 8 年之前
父节点
当前提交
5c8a64c64a
共有 1 个文件被更改,包括 7 次插入4 次删除
  1. 7 4
      src/renderers/widget.ts

+ 7 - 4
src/renderers/widget.ts

@@ -346,23 +346,25 @@ class RenderedPDF extends Widget {
 export
 export
 function resolveUrls(node: HTMLElement, resolver: RenderMime.IResolver,
 function resolveUrls(node: HTMLElement, resolver: RenderMime.IResolver,
                      linker: ICommandLinker | null): Promise<void> {
                      linker: ICommandLinker | null): Promise<void> {
+  let promises: Promise<void>[] = [];
   let imgs = node.getElementsByTagName('img');
   let imgs = node.getElementsByTagName('img');
   for (let i = 0; i < imgs.length; i++) {
   for (let i = 0; i < imgs.length; i++) {
     let img = imgs[i];
     let img = imgs[i];
     let source = img.getAttribute('src');
     let source = img.getAttribute('src');
     if (source) {
     if (source) {
-      return resolver.resolveUrl(source).then(url => {
+      promises.push(resolver.resolveUrl(source).then(url => {
         img.src = url;
         img.src = url;
         return void 0;
         return void 0;
-      });
+      }));
     }
     }
   }
   }
   let anchors = node.getElementsByTagName('a');
   let anchors = node.getElementsByTagName('a');
   for (let i = 0; i < anchors.length; i++) {
   for (let i = 0; i < anchors.length; i++) {
     let anchor = anchors[i];
     let anchor = anchors[i];
     let href = anchor.getAttribute('href');
     let href = anchor.getAttribute('href');
+    anchor.target = '_blank';
     if (href) {
     if (href) {
-      return resolver.resolveUrl(href).then(url => {
+      promises.push(resolver.resolveUrl(href).then(url => {
         anchor.href = url;
         anchor.href = url;
         if (linker && !utils.urlParse(url).protocol) {
         if (linker && !utils.urlParse(url).protocol) {
           linker.connectNode(anchor, CommandIDs.open, {
           linker.connectNode(anchor, CommandIDs.open, {
@@ -370,9 +372,10 @@ function resolveUrls(node: HTMLElement, resolver: RenderMime.IResolver,
           });
           });
         }
         }
         return void 0;
         return void 0;
-      });
+      }));
     }
     }
   }
   }
+  return Promise.all(promises).then(() => { return void 0; });
 }
 }