Browse Source

Don't preload <a> elements without a `href` attribute

Alexandre Dieulot 6 years ago
parent
commit
6b3bca1a1e
2 changed files with 5 additions and 0 deletions
  1. 4 0
      instantpage.js
  2. 1 0
      test/app.js

+ 4 - 0
instantpage.js

@@ -88,6 +88,10 @@ function mouseoutListener(event) {
 }
 }
 
 
 function isPreloadable(linkElement) {
 function isPreloadable(linkElement) {
+  if (!linkElement.href) {
+    return
+  }
+
   if (urlToPreload == linkElement.href) {
   if (urlToPreload == linkElement.href) {
     return
     return
   }
   }

+ 1 - 0
test/app.js

@@ -77,6 +77,7 @@ async function requestListener(req, res) {
     content += `<a href="${req.url}#anchor" id="anchor"><span>Same-page anchor</span></a>`
     content += `<a href="${req.url}#anchor" id="anchor"><span>Same-page anchor</span></a>`
     content += `<a href="/${page}?${Math.random()}" data-no-instant><span>Manually blacklisted link</span></a>`
     content += `<a href="/${page}?${Math.random()}" data-no-instant><span>Manually blacklisted link</span></a>`
     content += `<a href="https://www.google.com/"><span>External link</span></a>`
     content += `<a href="https://www.google.com/"><span>External link</span></a>`
+    content += `<a><span>&lt;a&gt; without <code>href</code></span></a>`
 
 
     let footer = await fsPromises.readFile(path.resolve(__dirname, 'footer.html'))
     let footer = await fsPromises.readFile(path.resolve(__dirname, 'footer.html'))
     footer = footer.toString().replace('__HASH__', jsHash)
     footer = footer.toString().replace('__HASH__', jsHash)