javascript's Little-known "window" functions

My Deep dive into the browsers global "window" object.

javascript's Little-known  "window" functions

My Deep dive into the browsers global "window" object.

updated 20211225 -fixed broaken images

Journey:

I was interested to see what all the functions were on the global window object.

Object.getOwnPropertyNames(window).map(x => {
try{
console.log(x, window[x])
}catch(e){
console.log("NOT FOUND")
}
})
Example output

Favorite finds

window.prompt()

let userResponse = window.prompt("Do you want me to 'sudo rm -rf /' ?")
console.log(userResponse)
sounds legit

Cool Little known javascript "window" functions

window.scrollTo(x,y)

window.scroll (2,3)
window.scrollBy (2,3)
window.scrollTo(2,3)

window.prompt(text)

window.prompt("hi")

window.confirm ("you want tacos?")

window.confirm ("you want tacos?")

window.getSelection()

window.getSelection()

window.getSelection().toString()
'r/ might be temporarily down or it may have moved permanently to a new web address.\nERR_INVALID_URL'

window.close()

close ()
VM1594:1 Scripts may close only the windows that were opened by them.

window.indexedDB

window.indexedDB ["cmp"] = "hi"
'hi'
window.indexedDB ["cmp"]
'hi'

window.performance

window.performance 
Performance {timeOrigin: 1636056781198.7, onresourcetimingbufferfull: null, timing: PerformanceTiming, navigation: PerformanceNavigation, memory: MemoryInfo, …}
eventCounts: EventCounts {size: 36}
memory: MemoryInfo
jsHeapSizeLimit: 2172649472
totalJSHeapSize: 8010896
usedJSHeapSize: 5962996
[[Prototype]]: MemoryInfo
navigation: PerformanceNavigation
redirectCount: 0
type: 0
[[Prototype]]: PerformanceNavigation
onresourcetimingbufferfull: null
timeOrigin: 1636056781198.7
timing: PerformanceTiming
connectEnd: 1636056781202
connectStart: 1636056781202
domComplete: 1636056781239
....


window.clientInformation

instreasted info about the current broswer

window.clientInformation.geolocation.getCurrentPosition((x)=>{console.log(x)})
VM2092:1 [Deprecation] getCurrentPosition() and watchPosition() no longer work on insecure origins. To use this feature, you should consider switching your application to a secure origin, such as HTTPS. See https://goo.gl/rStTGz for more details.

when on a https website

GeolocationPosition {coords: GeolocationCoordinates, timestamp: 1636057507561}
coords: GeolocationCoordinates {latitude: 38.XXXXXXXXXXXXX, longitude: -122.XXXXXXXXXXXXX, altitude: 0, accuracy: 97, altitudeAccuracy: null, …}
timestamp: 1636057507561
[[Prototype]]: GeolocationPosition
coords: (...)
timestamp: (...)
constructor: ƒ GeolocationPosition()
Symbol(Symbol.toStringTag): "GeolocationPosition"
get coords: ƒ coords()
get timestamp: ƒ timestamp()
[[Prototype]]: Object

window.outerWidth

Browser outer window width

window.outerWidth 
927
window.outerHeight 
1087

// Not sure what this is but something to do with the screen
window.screenX
953
window.screenY 
0

More screen info
window.screen

Screen {availWidth: 1920, availHeight: 1080, width: 1920, height: 1080, colorDepth: 24, …}
availHeight: 1080
availLeft: 0
availTop: 0
availWidth: 1920
colorDepth: 24
height: 1080
orientation: ScreenOrientation {angle: 0, type: 'landscape-primary', onchange: null}
pixelDepth: 24
width: 1920

window.navigator

window.navigator.onLine

How to check if the browser is connected to the internet!

window.navigator.onLine
true
window.navigator.onLine
false

window.navigator.language

how to get current language

 

window.navigator.connection.effectiveType

get network speed infromation

 
 window.navigator.connection.effectiveType
'4g'

window.navigator.connection
downlink: 2.35
effectiveType: "4g"
onchange: null
rtt: 250
saveData: false

window.navigator.platform

get which platform os im on

 
 window.navigator.platform
'Win32'

window.history

get information about past page load like page scroll, or props

 
window.history

 length: 7
scrollRestoration: "auto"
state:
metadata: {zva: 1636058463305, Oj: 1636058463306, C6: 1636058463307, Cz: 0}
rAa: {hs: Array(1)}
state:
metadata: {wva: 1636047688812, Pj: 1636047688813, C6: 1636047688814, Cz: 0}
oAa: {hs: Array(1)}
state: null
url: "/search?q=javascript+list+all+functions+of+object&safe=strict&ei=LxuEYayGGNOkqtsPgvW4MA&oq=list+of+all+javascript+functions&gs_lcp=Cgdnd3Mtd2l6EAEYATIFCAAQgAQyBggAEAgQHjIGCAAQCBAeSgQIQRgAUABYAGDeHGgAcAB4AIABjwiIAY8IkgEDNy0xmAEA&sclient=gws-wiz&ved=0ahUKEwjs2b--oP_zAhVTkmoFHYI6DgYQ4dUDCA8&uact=5"
[[Prototype]]: Object
url: "/search?q=javascript+list+all+functions+of+object&safe=

window.location

window.location.reload()

run a page reload

window.location.reload()

Weird stuff!

how to create a html comment with javascript!

new window.Comment ("sdf")
<!--sdf-->

How to create image,Audio tag with javascript

new window.Image (200,200)
<img width=​"200" height=​"200">​

new window.Audio ()
<audio preload=​"auto">​</audio>​

window.URL()

create url objects

new window.URL("http://hihi")
URL {origin: 'http://hihi', protocol: 'http:', username: '', password: '', host: 'hihi', …}
hash: ""
host: "hihi"
hostname: "hihi"
href: "http://hihi/"
origin: "http://hihi"
password: ""
pathname: "/"
port: ""
protocol: "http:"
search: ""
searchParams: URLSearchParams {}
username: ""


Also comes in webkit flavor
new window.webkitURL ("https://www.buts.com")
 

window.Worker

new window.Worker ("hellow")
onerror: null
onmessage: null
[[Prototype]]: Worker
onerror: (...)
onmessage: (...)
postMessage: ƒ postMessage()
terminate: ƒ terminate()
constructor: ƒ Worker()
Symbol(Symbol.toStringTag): "Worker"
get onerror: ƒ onerror()
set onerror: ƒ onerror()
get onmessage: ƒ onmessage()
set onmessage: ƒ onmessage()
[[Prototype]]: EventTarget

Escape an unsecape a url string

window.unescape ("f%06")
'f\x06'

window.escape ("fuck$")
'fuck%24'

Uncommon console.X commands

makes a console group with a toggle arrow . cool, neat

window.console.group(console.log("hi"))
window.console.groupCollapsed()
window.console.groupEnd()

console.count()

window.console.count()
VM6554:1 default: 1
undefined
window.console.count()
VM6559:1 default: 2
undefined
window.console.count()
VM6564:1 default: 3

Inspect things in chrome debugger

window.inspect

window.inspect (x=>x)
x=>x

Author

by oran collins
github.com/wisehackermonkey
oranbusiness 🕧 gmail <ascii dot> com
20211105
I use a tracker that is pravicy focused so if you block its cool, im big on blocking stuff on my own machine. im doing it to see if anyone is actualy reading my blog posts...:)