demo/appsList.html unoptimized test time 1100 ms
-
load optimisation: all vars marshalling is not needed, it is sufficient to marshall only vars from particular script
- use currentScript.EPA_vars in sync code
-
load optimisation: container window sanitizing is not needed if insulation done properly. Make it optional for hacky or suspicious code. Paranoid security mode.
-
load optimisation: simultaneous injection of scripts delays whole page until all scripts are executed
-
serviceWorker support
-
URL mapping unit test
- async import
-
release bundle build
-
CDN deployment
-
JSFiddle/Plunkr publishing, https://www.sitepoint.com/7-code-playgrounds
-
fix SCRIPT type!=module : keep original,do not create wrap, unit test
-
unit test 4 failed to load JS(incorrect syntax & r/t exception)
-
URL mapping and relative URLs resolving
-
use view-source: http schema ( instead of page execution) for fetching targetFrame and onTargetLoad(), only in browsers which support view-source:(Chrome,FF, does not work in Edge)
-
console methods test
-
window.customElements API
-
move demo to CDN, wc.org does not serve URL params
-
document.head implementation (as script injection node in microapp)
-
disable 'serviceWorker' in navigator until implemented
-
12 dwarfs demo
-
script nomodule support
-
support integrity attribute
-
target attribute in content ( A & FORM )
-
epa.window.parent.location.href
-
cookies, scope impl. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy#A_complete_traps_list_example
-
window.self
-
navigator.serviceWorker.register
-
insulation layers - define dynamic change logic and restrictions.
-
scope
- docs for insulation layers
- window.* insulation
-
history
-
Web Components
- wrap window.customElements to use CustomElementRegistry for Web Components scope insulation
- sample with same component tag but different implementation
- CustomElementRegistry use for loading WC via link rel="import"
-
separate sample on each aspect
-
clipboard protection & insulation
-
microapplications
- intro page, menu & view-source samples, reference to registry
- view-source app pages: view & form ( source url, theme )
-
Extend HTMLElement instead of Polymer.Element
- use embed-page.js as entry point
-
bower & npm publish
-
instructions to use
-
form post
-
event handlers re-evaluation for embedded content
-
compatibility with Polymer, Ionic, Stencil, React, Angular,?...
-
series of examples in Plunker, add examples into ApiFusion, back links from Plunker to AF as "other examples" link.
Release 1
- remove Polymer dependencies
- remove the use of cancelled XHRs.
WishList
- browser-in-browser show case
- onerror event
- "noscript" attribute or scope value to serve content with JS completely disabled
- include embed-script-legacy.js in package as embed-page.js could be served only via type=module, still eill be handy to serve via usual JS script tag.
- embed-page as es6 module ( now fails in strict mode due to 'with' operator ) , use static import instead of dynamic
- evaluate the use of DOMImplementation.createHTMLDocument|DOMImplementation.createDocument|new Document()
- populate title attribute into document.head.title (via doc constructor param) & sync head.title to @title from external doc.
- embed-page.promise getter to avoid registering/release "load"/"error" event handlers.
- error event
- cross-domain test: load, JS insulation, scope
- epa.document.origin === window.top.document.origin
- BroadcastChannel
- documentElement, firstChild, firstElementChild, lastChild, lastElementChild
- forms, images, anchors, links, ...
- window.focus(), window.blur(), window.closed flag
- window.print()
- network control and management layer. Could be implemented by service workers or wrapping ajax APIs.