4 ms·
For even more fun, turn your notepad into an interactive JavaScript environment: data:text/html, <html contenteditable onkeyup="eval(this.innerText)"> Then
by Cushman 14y ago
For even more fun, turn your notepad into an interactive JavaScript environment:
data:text/html, <html contenteditable onkeyup="eval(this.innerText)">
Then you can upgrade it by pasting in something like this:
this.onkeyup = function () {
this.style.backgroundColor = 'white';
try {
eval(this.innerText);
} catch (e) {
this.style.backgroundColor = '#FFAAAA';
}
}
- pestaa 14y agoThis is clearly awesome. First thing I did? Got into infinite loop. This is not exactly a good interactive console for JavaScript, but still very fun.
- Cushman 14y agoI think I like it because of how weirdly constrained it is. Especially when you're writing something that will overwrite the handler itself, it's easy to get yourself stuck in a loop or a strange dead end.
- christiangenco 14y agoTyping `alert("hi")` was a bad choice.
- shurcooL 14y agoIs there an equivalent to `this.onkeyup` for touch devices that don't generate onkeyup events? Trying to make this work on an iPad, but I only have surface knowledge of JS.
- Cushman 14y agoHmm... I only have an iPad simulator with me, but it works just pasting in what I wrote above. Maybe something in your data URI is getting munged? Keyup is used here rather than keypress (which fires only once for each down-up event) since backspace won't fire keypress events, which is a nice thing to have in a live environment. But I can't think of any environment which would implement keypress and not keyup, or how one might work around not having key events at all. I did, however, discover that if you alert in mobile Safari (in simulation and on my iPhone) on a backspace keydown, the keyup never gets through and it will happily erase everything before the cursor.
- shurcooL 14y agoYou're right, it works fine with onkeyup. I tried pasting the URL directly instead of opening from "other devices" and it worked. Thanks.
- infinity 14y agoMaybe this helps you, there is a W3 document about touch events: http://www.w3.org/TR/touch-events/ http://www.w3.org/TR/touch-events/ A list of TouchEvent types is here: http://www.w3.org/TR/touch-events/#list-of-touchevent-types http://www.w3.org/TR/touch-events/#list-of-touchevent-types Here is a document from Apple about touch events: http://developer.apple.com/library/safari/#documentation/appleapplications/reference/safariwebcontent/HandlingEvents/HandlingEvents.html http://developer.apple.com/library/safari/#documentation/app... And a list of events supported by the Safari browser: http://developer.apple.com/library/safari/#documentation/appleapplications/reference/safariwebcontent/HandlingEvents/HandlingEvents.html#//apple_ref/doc/uid/TP40006511-SW5 http://developer.apple.com/library/safari/#documentation/app... I don't have an iPad, but I would love to know, if you could successfully use one of these events in this context. Edit: For example, orientationchange looks promising. Type something, then change orientation.
- seliopou 14y agoThis is a much easier way to customize its appearance: data:text/html, <html><style> body { font-family: sans-serif }</style><body contenteditable>
- Davertron 14y agoI forked minikomi's gist above that does something like this, except you use ctrl+j to execute what's in the buffer: https://gist.github.com/4673043 https://gist.github.com/4673043
- ssfermoy 14y agoFor me Firefox seems not to work with this.innerText . Instead you can use this.textContent to get it to work.