load-html
include HTML code inside HTML pages using a custom tag
load-html
to load content dynamically
Features | Usage | API | Annotated source | License
Features
- Load HTML snippets from remote URLs, recursively.
- Can be used to load Web Components, as an alternative to HTML imports: see Web Components Template example.
- Supports IE 10.
- Since it uses
innerHTML
it will not execute script tags. - Can be used on modern browsers to load WebComponents, see WebComponents example folder
Usage
See usage example folder or read below.
Start with your index.html
load-html usage example Loading...
Content inside <load-html>
custom HTML tag is optional.
Create files helloWorld.html and linkToHomepage.html in the same folder.
<!-- helloWorld.html --> Hello World
<!-- linkToHomepage.html --> This content was loaded by load-html.
Import loadHtml
function some how, for example, add the following tag
to your index.html:
Then invoke it on window load, for instance add the following snippet to your index.html:
API
loadHtml(callback)
You can pass an optional callback function as argument:
- It will be executed when
<load-html />
nodes are loaded. - Loaded nodes will be passed as first argument.
- Note that loading is recursive, hence callback function could be executed more than once.
NOTA BENE The nodes
argument passed to callback is a NodeList.
Although
NodeList
is not anArray
, it is possible to iterate over it withforEach()
For example, using something like nodes.filter(node => !node.getAttribute('error'))
will fail.
However you may want to filter those nodes that did not loaded correctly. Do something like
Annotated source
Start with attribution comment: web site and license.
// https://g14n.info/load-html// License: MIT
Just define a global loadHtml function.
{
Select all <load-html />
tags. Note the loaded attribute is used to achieve recursive loading.
var nodes = document; var toBeLoaded = nodeslength;
Fetch the HTML content for each node.
nodes
Keep track of number of DOM nodes loaded, then try to repeat recursively. When done, invoke callback, if any.
node; toBeLoaded--; if toBeLoaded == 0 if typeof callback == 'function' ; });
Send request to fetch content.
loader; loader;
Store error, mark node as loaded.
} catch error console; node; node; })}
Export it as a global function.
windowloadHtml = loadHtml;