Find non-default global objects for "require"
Sometimes when trying to require stubborn modules, it's necessary to catch objects that have been attached to the global scope. To get an array of the stuff in global scope, you can look at the window object as follows:
Object.keys(window)
As you might expect, there's a ton of stuff in there. How much there is depends on your browser. Below, I've compiled (un-scientifically) arrays of everything in window by default in Firefox, Chrome, and Safari (last updated Dec 23, 2018). If your browser is missing and you can send me the corresponding array of default global objects, feel free to let me know on the Observable forums or via twitter @blockspins!
defaultWindowFirefox = [ "close", "stop", "focus", "blur", "open", "alert", "confirm", "prompt", "print", "postMessage", "captureEvents", "releaseEvents", "getSelection", "getComputedStyle", "matchMedia", "moveTo", "moveBy", "resizeTo", "resizeBy", "scroll", "scrollTo", "scrollBy", "requestAnimationFrame", "cancelAnimationFrame", "getDefaultComputedStyle", "scrollByLines", "scrollByPages", "sizeToContent", "updateCommands", "find", "dump", "setResizable", "requestIdleCallback", "cancelIdleCallback", "btoa", "atob", "setTimeout", "clearTimeout", "setInterval", "clearInterval", "createImageBitmap", "fetch", "self", "name", "history", "locationbar", "menubar", "personalbar", "scrollbars", "statusbar", "toolbar", "status", "closed", "frames", "length", "opener", "parent", "frameElement", "navigator", "external", "applicationCache", "screen", "innerWidth", "innerHeight", "scrollX", "pageXOffset", "scrollY", "pageYOffset", "screenX", "screenY", "outerWidth", "outerHeight", "performance", "mozInnerScreenX", "mozInnerScreenY", "devicePixelRatio", "scrollMaxX", "scrollMaxY", "fullScreen", "mozPaintCount", "ondevicemotion", "ondeviceorientation", "onabsolutedeviceorientation", "ondeviceproximity", "onuserproximity", "ondevicelight", "InstallTrigger", "sidebar", "crypto", "onabort", "onblur", "onfocus", "onauxclick", "oncanplay", "oncanplaythrough", "onchange", "onclick", "onclose", "oncontextmenu", "ondblclick", "ondrag", "ondragend", "ondragenter", "ondragexit", "ondragleave", "ondragover", "ondragstart", "ondrop", "ondurationchange", "onemptied", "onended", "oninput", "oninvalid", "onkeydown", "onkeypress", "onkeyup", "onload", "onloadeddata", "onloadedmetadata", "onloadend", "onloadstart", "onmousedown", "onmouseenter", "onmouseleave", "onmousemove", "onmouseout", "onmouseover", "onmouseup", "onwheel", "onpause", "onplay", "onplaying", "onprogress", "onratechange", "onreset", "onresize", "onscroll", "onseeked", "onseeking", "onselect", "onshow", "onstalled", "onsubmit", "onsuspend", "ontimeupdate", "onvolumechange", "onwaiting", "onselectstart", "ontoggle", "onpointercancel", "onpointerdown", "onpointerup", "onpointermove", "onpointerout", "onpointerover", "onpointerenter", "onpointerleave", "ongotpointercapture", "onlostpointercapture", "onmozfullscreenchange", "onmozfullscreenerror", "onanimationcancel", "onanimationend", "onanimationiteration", "onanimationstart", "ontransitioncancel", "ontransitionend", "ontransitionrun", "ontransitionstart", "onwebkitanimationend", "onwebkitanimationiteration", "onwebkitanimationstart", "onwebkittransitionend", "onerror", "speechSynthesis", "onafterprint", "onbeforeprint", "onbeforeunload", "onhashchange", "onlanguagechange", "onmessage", "onmessageerror", "onoffline", "ononline", "onpagehide", "onpageshow", "onpopstate", "onstorage", "onunload", "localStorage", "origin", "isSecureContext", "indexedDB", "caches", "sessionStorage", "window", "document", "location", "top", "customElements", "onvrdisplayconnect", "onvrdisplaydisconnect", "onvrdisplayactivate", "onvrdisplaydeactivate", "onvrdisplaypresentchange", "screenLeft", "screenTop", ]
defaultWindowChrome = ["postMessage","blur","focus","close","frames","self","window","parent","opener","top","length","closed","location","document","origin","name","history","locationbar","menubar","personalbar","scrollbars","statusbar","toolbar","status","frameElement","navigator","customElements","external","screen","innerWidth","innerHeight","scrollX","pageXOffset","scrollY","pageYOffset","screenX","screenY","outerWidth","outerHeight","devicePixelRatio","clientInformation","screenLeft","screenTop","defaultStatus","defaultstatus","styleMedia","onanimationend","onanimationiteration","onanimationstart","onsearch","ontransitionend","onwebkitanimationend","onwebkitanimationiteration","onwebkitanimationstart","onwebkittransitionend","isSecureContext","onabort","onblur","oncancel","oncanplay","oncanplaythrough","onchange","onclick","onclose","oncontextmenu","oncuechange","ondblclick","ondrag","ondragend","ondragenter","ondragleave","ondragover","ondragstart","ondrop","ondurationchange","onemptied","onended","onerror","onfocus","oninput","oninvalid","onkeydown","onkeypress","onkeyup","onload","onloadeddata","onloadedmetadata","onloadstart","onmousedown","onmouseenter","onmouseleave","onmousemove","onmouseout","onmouseover","onmouseup","onmousewheel","onpause","onplay","onplaying","onprogress","onratechange","onreset","onresize","onscroll","onseeked","onseeking","onselect","onstalled","onsubmit","onsuspend","ontimeupdate","ontoggle","onvolumechange","onwaiting","onwheel","onauxclick","ongotpointercapture","onlostpointercapture","onpointerdown","onpointermove","onpointerup","onpointercancel","onpointerover","onpointerout","onpointerenter","onpointerleave","onafterprint","onbeforeprint","onbeforeunload","onhashchange","onlanguagechange","onmessage","onmessageerror","onoffline","ononline","onpagehide","onpageshow","onpopstate","onrejectionhandled","onstorage","onunhandledrejection","onunload","performance","stop","open","alert","confirm","prompt","print","requestAnimationFrame","cancelAnimationFrame","requestIdleCallback","cancelIdleCallback","captureEvents","releaseEvents","getComputedStyle","matchMedia","moveTo","moveBy","resizeTo","resizeBy","getSelection","find","webkitRequestAnimationFrame","webkitCancelAnimationFrame","fetch","btoa","atob","setTimeout","clearTimeout","setInterval","clearInterval","createImageBitmap","scroll","scrollTo","scrollBy","onappinstalled","onbeforeinstallprompt","crypto","ondevicemotion","ondeviceorientation","ondeviceorientationabsolute","indexedDB","webkitStorageInfo","sessionStorage","localStorage","chrome","visualViewport","speechSynthesis","webkitRequestFileSystem","webkitResolveLocalFileSystemURL","openDatabase","applicationCache","onselectstart","onselectionchange","queueMicrotask","caches",]
defaultWindowSafari = "document,window,self,name,location,history,locationbar,menubar,personalbar,scrollbars,statusbar,toolbar,status,closed,frames,length,top,opener,parent,frameElement,navigator,applicationCache,sessionStorage,localStorage,screen,innerHeight,innerWidth,scrollX,pageXOffset,scrollY,pageYOffset,screenX,screenY,outerWidth,outerHeight,devicePixelRatio,event,defaultStatus,defaultstatus,offscreenBuffering,screenLeft,screenTop,clientInformation,styleMedia,indexedDB,webkitIndexedDB,speechSynthesis,onabort,onblur,oncanplay,oncanplaythrough,onchange,onclick,oncontextmenu,oncuechange,ondblclick,ondrag,ondragend,ondragenter,ondragleave,ondragover,ondragstart,ondrop,ondurationchange,onemptied,onended,onerror,onfocus,oninput,oninvalid,onkeydown,onkeypress,onkeyup,onload,onloadeddata,onloadedmetadata,onloadstart,onmousedown,onmouseenter,onmouseleave,onmousemove,onmouseout,onmouseover,onmouseup,onmousewheel,onpause,onplay,onplaying,onprogress,onratechange,onrejectionhandled,onreset,onresize,onscroll,onseeked,onseeking,onselect,onstalled,onsubmit,onsuspend,ontimeupdate,ontoggle,onunhandledrejection,onvolumechange,onwaiting,ontransitionend,ontransitionrun,ontransitionstart,ontransitioncancel,onanimationend,onanimationiteration,onanimationstart,onanimationcancel,crypto,performance,onbeforeunload,onhashchange,onlanguagechange,onmessage,onoffline,ononline,onpagehide,onpageshow,onpopstate,onstorage,onunload,origin,close,stop,focus,blur,open,alert,confirm,prompt,print,requestAnimationFrame,cancelAnimationFrame,postMessage,captureEvents,releaseEvents,getComputedStyle,matchMedia,moveTo,moveBy,resizeTo,resizeBy,scroll,scrollTo,scrollBy,getSelection,find,webkitRequestAnimationFrame,webkitCancelAnimationFrame,webkitCancelRequestAnimationFrame,getMatchedCSSRules,showModalDialog,webkitConvertPointFromPageToNode,webkitConvertPointFromNodeToPage,openDatabase,setTimeout,clearTimeout,setInterval,clearInterval,atob,btoa,customElements,caches,isSecureContext,fetch".split(',')
defaultWindowEdge = "chrome,applicationCache,browser,caches,clientInformation,closed,crypto,defaultStatus,devicePixelRatio,document,event,frameElement,frames,history,indexedDB,innerHeight,innerWidth,isSecureContext,length,localStorage,location,locationbar,menubar,name,navigator,offscreenBuffering,onabort,onafterprint,onanimationend,onanimationiteration,onanimationstart,onbeforeprint,onbeforeunload,onblur,oncanplay,oncanplaythrough,onchange,onclick,oncompassneedscalibration,oncontextmenu,oncuechange,ondblclick,ondevicelight,ondevicemotion,ondeviceorientation,ondrag,ondragend,ondragenter,ondragleave,ondragover,ondragstart,ondrop,ondurationchange,onemptied,onended,onerror,onfocus,ongotpointercapture,onhashchange,oninput,oninvalid,onkeydown,onkeypress,onkeyup,onload,onloadeddata,onloadedmetadata,onloadstart,onlostpointercapture,onmessage,onmessageerror,onmousedown,onmouseenter,onmouseleave,onmousemove,onmouseout,onmouseover,onmouseup,onmousewheel,onmsgesturechange,onmsgesturedoubletap,onmsgestureend,onmsgesturehold,onmsgesturestart,onmsgesturetap,onmsinertiastart,onoffline,ononline,onpagehide,onpageshow,onpause,onplay,onplaying,onpointercancel,onpointerdown,onpointerenter,onpointerleave,onpointermove,onpointerout,onpointerover,onpointerup,onpopstate,onprogress,onratechange,onreadystatechange,onreset,onresize,onscroll,onseeked,onseeking,onselect,onselectionchange,onselectstart,onstalled,onstorage,onsubmit,onsuspend,ontimeupdate,ontransitionend,ontransitionstart,onunload,onvolumechange,onvrdisplayactivate,onvrdisplayblur,onvrdisplayconnect,onvrdisplaydeactivate,onvrdisplaydisconnect,onvrdisplayfocus,onvrdisplaypointerrestricted,onvrdisplaypointerunrestricted,onvrdisplaypresentchange,onwaiting,onwebkitanimationend,onwebkitanimationiteration,onwebkitanimationstart,onwebkittransitionend,onwheel,opener,origin,outerHeight,outerWidth,pageXOffset,pageYOffset,parent,performance,personalbar,screen,screenLeft,screenTop,screenX,screenY,scrollX,scrollY,scrollbars,self,sessionStorage,speechSynthesis,status,statusbar,styleMedia,toolbar,top,window,alert,atob,blur,btoa,cancelAnimationFrame,captureEvents,clearImmediate,clearInterval,clearTimeout,close,confirm,fetch,focus,getComputedStyle,getMatchedCSSRules,getSelection,matchMedia,moveBy,moveTo,msWriteProfilerMark,open,postMessage,print,prompt,releaseEvents,requestAnimationFrame,resizeBy,resizeTo,scroll,scrollBy,scrollTo,setImmediate,setInterval,setTimeout,stop,webkitCancelAnimationFrame,webkitConvertPointFromNodeToPage,webkitConvertPointFromPageToNode,webkitRequestAnimationFrame".split(',')
Now, try uncommenting out the following cell (which will give an error) and then re-running the nonDefaultGlobals cell beneath it:
// require("hyperhtml")
// This cell just filters out the default junk, depending on the detected browser nonDefaultGlobals = Object.keys(window).filter(str => { const UA = navigator.userAgent; let filter; if (UA.includes('Firefox')) filter = defaultWindowFirefox; else if (UA.includes('Edge')) filter = defaultWindowEdge; else if (UA.includes('Chrome')) filter = defaultWindowChrome; else if (UA.includes('Safari')) filter = defaultWindowSafari; else // browser not yet added to this notebook, sorry! filter = ''; if (UA.includes('Windows')) filter.push("onvrdisplayconnect","onvrdisplaydisconnect","onvrdisplayactivate", "onvrdisplaydeactivate","onvrdisplaypresentchange"); if (UA.includes('Mobile')) // any other mobile-only properties / methods? filter.push('orientation'); return !filter.includes(str); })
Note that define is part of the AMD API as implemented by d3-require, which is part of the Observable standard library. Also, if you've used Observable's syntax highlighting then hljs will appear as well. Try uncommenting the following md cell (shortcut: select everything in the cell and then hit Ctrl-/ or Cmd-/).
// md`\`\`\`js // function // \`\`\``