I get a reference error when I try this (chrome stable on linux)
Ah, thanks for the heads-up, apparently there is something borked in Chromium wrt $ / $$ encapsulation, as it seems they are nor reachable from the (global) context setInterval so doing `window.$ = $; window.$$ = $$;` fixes that in Chrome. Not sure why. (Yet again embarrassed myself by trying a snippet that "simply must work ® according all documentations ™" in single a browser only before posting. Sigh.)
Re:Stimulation Clicker
by throwaway127482 on Wednesday January 08, 2025 @07:18PM
(#42640135)
I bet it's working as intended. The $ symbol is probably a special feature of the console and is not intended to be a property of window. Inside setInterval, the function is no longer being executed in the special console environment, which has access to that symbol.
Yes, I guess there could be some intention behind that, presumably some security precautions, but still: the fact that you can see $ in the globalThis (as a non-enumerable prop), and that globalThis you see from inside the timeout-ed function is strictly equal to globalThis seen directly from the console, that makes it somewhat spooky.
console.log(Object.getOwnPropertyDescriptor(globalThis, '$'))
// {writable: true, enumerable: true, configurable: true, value: f}
globalThis.globalThat = globalThis
globalThat.$ === globalThis.$
// true
setTimeout(()=>console.log(globalThis.globalThat === globalThis))
// true
setTimeout(()=>console.log(Object.getOwnPropertyDescriptor(globalThis, '$')))
// undefined (!)
$ = $
setTimeout(()=>console.log(Object.getOwnPropertyDescriptor(globalThis, '$')))
// { writable: true, enumerable: true, configurable: true, value: f}
And it (`setTimeout(()=>{console.log(typeof $==="function")},0)`) works in Firefox. (Interestingly, you cannot get $'s descriptor in there, but you have it always available in timeout.)
[0] https://devtoolstips.org/tips/en/query-dom-from-console/ [1] https://firefox-source-docs.mozilla.org/devtools-user/web_co... [2] https://developer.chrome.com/docs/devtools/console/utilities... [3] https://learn.microsoft.com/en-us/microsoft-edge/devtools-gu... [4] https://developer.apple.com/library/archive/documentation/Ap...