{"id":6910,"date":"2010-07-26T06:24:38","date_gmt":"2010-07-26T13:24:38","guid":{"rendered":"http:\/\/css-tricks.com\/?p=6910"},"modified":"2010-07-26T06:25:30","modified_gmt":"2010-07-26T13:25:30","slug":"browse-with-javascript-convo","status":"publish","type":"post","link":"https:\/\/css-tricks.com\/browse-with-javascript-convo\/","title":{"rendered":"Dude, you browse with JavaScript on?"},"content":{"rendered":"

Dude, you browse with JavaScript on?<\/p>\n

Uhm, yeah, why wouldn’t I?<\/p>\n

It’s totally insecure. Hackers could destroy your computer.<\/p>\n

Hackers? What is this 1995? And, no they can’t.<\/p>\n

They can definitely steal information<\/a> about you without you knowing.<\/p>\n

Like what?<\/p>\n

Like you’re address book information or your browsing history, depending on your browser and settings.<\/p>\n

<\/p>\n

So if I were to visit some dark corner of the internet where people ran malicious scripts like this, people might be able to capture that my name is Bob and I live at 123 Maple Drive Mayberry, NC? And that sometimes I look at boobs at The Daily Niner? <\/p>\n

Yes.<\/p>\n

But I don’t use autofill on my forms at the browser level, they can’t. What about you? Isn’t like every single website you visit seemingly broken? <\/p>\n

Well good websites are coded to work fine without JavaScript, and I can selectively enable sites I trust to allow it.<\/p>\n

That sounds like a lot of work to maintain a whitelist manually. And it’s not like you do a security audit of each site before whitelisting it right? You just decide to trust it, basically because you want to look at and use that website right now and JavaScript is the only way.<\/p>\n

Yes but I’m much more likely to enable it on a big businesses website than some random blog. Look, I’m not alone here, millions of people have downloaded the NoScript plugin for Firefox<\/a> alone.<\/p>\n

I see that. Here’s some empirical evidence for you though. I’ve never once blocked JavaScript on any of the browsers I’ve used. I browse around all day with little regard to my trust level of the current website. In general my trust level is actually fairly low. I know a lot of sites I visit are hosted on shared hosting by folks like me who aren’t security gurus. I’ve had my websites hacked before on the server-level (nothing to do with JavaScript), which then inserted malicious JavaScript into my pages. I’m sure this has happened to many of those other sites I visit. Sometimes that JavaScript stores weird cookie data or redirects the website. Totally sucky and undesirable, but nothing that serious has ever happened to the point where I even consider just turning off JavaScript. I’ve never lost sensitive data or gotten spyware or anything like that.<\/p>\n

Are you sure? Have you ever had weird charges on a credit card you’ve had to refute?<\/p>\n

Well yeah.<\/p>\n

Do you know exactly how that information was stolen from you?<\/p>\n

No I don’t, but I doubt it was JavaScript. <\/p>\n

Doubt… Trust… two sides of the same coin.<\/p>\n

Here’s another reason I browse with JavaScript on. I like JavaScript. I write JavaScript. It does cool stuff and I like to see how other people use it. So I’m biased in that regard. As a web designer and developer, I don’t like hearing how many people browse with JavaScript off. I want that to go away. I don’t want to create gracefully degrading websites because it’s often twice the work and only for accommodating people with outdated concerns about this technology. And don’t tell me all about accessibility, I hear that most screen readers handle JavaScript just fine.<\/p>\n

A site that works well without JavaScript also means it also likely has good architecture. It works great alone, and JavaScript adds to the user experience as needed. Relying on JavaScript entirely is just lazy.<\/p>\n

You see it as lazy I see it as the future. So what about Flash, do you block that too?<\/p>\n

No, I love Flash.<\/p>\n

I knew I didn’t like you. You’re probably a PC guy too huh?<\/p>\n

Dude, we’re not going there.<\/p>\n","protected":false},"excerpt":{"rendered":"

Dude, you browse with JavaScript on? Uhm, yeah, why wouldn’t I? It’s totally insecure. Hackers could destroy your computer. Hackers? What is this 1995? And, no they can’t. They can definitely steal information about you without you knowing. Like what? Like you’re address book information or your browsing history, depending on your browser and settings.<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_bbp_topic_count":0,"_bbp_reply_count":0,"_bbp_total_topic_count":0,"_bbp_total_reply_count":0,"_bbp_voice_count":0,"_bbp_anonymous_reply_count":0,"_bbp_topic_count_hidden":0,"_bbp_reply_count_hidden":0,"_bbp_forum_subforum_count":0,"sig_custom_text":"","sig_image_type":"featured-image","sig_custom_image":0,"sig_is_disabled":false,"inline_featured_image":false,"c2c_always_allow_admin_comments":false,"footnotes":"","jetpack_publicize_message":"","jetpack_is_tweetstorm":false,"jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":[]},"categories":[4],"tags":[],"jetpack_publicize_connections":[],"acf":[],"jetpack_featured_media_url":"","jetpack-related-posts":[{"id":199914,"url":"https:\/\/css-tricks.com\/using-chrome-devtools-to-debug-javascript-in-any-browser-with-ghostlab-2\/","url_meta":{"origin":6910,"position":0},"title":"Using Chrome DevTools to Debug JavaScript in Any Browser with Ghostlab 2","date":"April 15, 2015","format":false,"excerpt":"The following a guest post by Andi Dysart and Matthias Christen of Ghostlab. I was pretty impressed when I heard that the newly-released Ghostlab 2 could do this. I think a lot of us developers use Chrome because the DevTools are so good, and it sure would be able to\u2026","rel":"","context":"In "Article"","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":361241,"url":"https:\/\/css-tricks.com\/node-and-how-it-works-with-npm\/","url_meta":{"origin":6910,"position":1},"title":"What the Heck is Node?","date":"January 20, 2022","format":false,"excerpt":"Here\u2019s what you need to know about Node.js (or simply Node) and how it relates to npm right off the bat: Node is JavaScript, but as a server-side language.This is possible because of V8, Chromium\u2019s JavaScript engine, which can run on its own, outside the confines of the browser.Node and\u2026","rel":"","context":"In "Article"","img":{"alt_text":"","src":"https:\/\/i0.wp.com\/css-tricks.com\/wp-content\/uploads\/2022\/01\/node-js-logo.png?fit=1200%2C600&ssl=1&resize=350%2C200","width":350,"height":200},"classes":[]},{"id":350264,"url":"https:\/\/css-tricks.com\/detecting-media-query-support-in-css-and-javascript\/","url_meta":{"origin":6910,"position":2},"title":"Detecting Media Query Support in CSS and JavaScript","date":"August 23, 2021","format":false,"excerpt":"You can't just do @media (prefers-reduced-data: no-preference) alone because, as Kilian Valkhof says: [...] that would be false if either there was no support (since the browser wouldn't understand the media query) or if it\u00a0was\u00a0supported but the user wanted to preserve data. Usually @supports is the tool for this in\u2026","rel":"","context":"In "Link"","img":{"alt_text":"","src":"https:\/\/i0.wp.com\/css-tricks.com\/wp-content\/uploads\/2019\/02\/supports-code.png?fit=1200%2C600&ssl=1&resize=350%2C200","width":350,"height":200},"classes":[]},{"id":338426,"url":"https:\/\/css-tricks.com\/how-to-improve-css-performance\/","url_meta":{"origin":6910,"position":3},"title":"How to Improve CSS Performance","date":"April 19, 2021","format":false,"excerpt":"There is no doubt that CSS plays a huge role in web performance. Milica Mihajlija puts a point on exactly why: When there is CSS available for a page, whether it\u2019s inline or an external stylesheet,\u00a0the browser delays rendering until the CSS is parsed. This is because pages without CSS\u2026","rel":"","context":"In "Link"","img":{"alt_text":"","src":"https:\/\/i0.wp.com\/css-tricks.com\/wp-content\/uploads\/2021\/04\/calibreapp-css-performance.jpg?fit=1200%2C600&ssl=1&resize=350%2C200","width":350,"height":200},"classes":[]},{"id":358612,"url":"https:\/\/css-tricks.com\/embrace-the-platform\/","url_meta":{"origin":6910,"position":4},"title":"Embrace the Platform","date":"December 13, 2021","format":false,"excerpt":"So what is the one thing that people can do is to make their website better? To answer that, let's take a step back in time \u2026 The year is 1998, and the web is on the rise. In an attempt to give a high-level overview of the architecture of\u2026","rel":"","context":"In "2021 End-of-Year Thoughts"","img":{"alt_text":"","src":"https:\/\/i0.wp.com\/css-tricks.com\/wp-content\/uploads\/2018\/11\/toolbox-frameworks-scaled.jpg?fit=1200%2C600&ssl=1&resize=350%2C200","width":350,"height":200},"classes":[]},{"id":304801,"url":"https:\/\/css-tricks.com\/a-guide-to-handling-browser-events\/","url_meta":{"origin":6910,"position":5},"title":"A Guide to Handling Browser Events","date":"March 13, 2020","format":false,"excerpt":"In this post, Sarah Chima walks us through how we can work with browser events, such as clicking, using JavaScript. There\u2019s a ton of great info in here! If JavaScript isn\u2019t your strong suit, I think this is the best explanation of event handling that I\u2019ve read in quite some\u2026","rel":"","context":"In "Link"","img":{"alt_text":"","src":"https:\/\/i0.wp.com\/css-tricks.com\/wp-content\/uploads\/2019\/09\/pointer-click.png?fit=1200%2C600&ssl=1&resize=350%2C200","width":350,"height":200},"classes":[]}],"featured_media_src_url":null,"_links":{"self":[{"href":"https:\/\/css-tricks.com\/wp-json\/wp\/v2\/posts\/6910"}],"collection":[{"href":"https:\/\/css-tricks.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/css-tricks.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/css-tricks.com\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/css-tricks.com\/wp-json\/wp\/v2\/comments?post=6910"}],"version-history":[{"count":5,"href":"https:\/\/css-tricks.com\/wp-json\/wp\/v2\/posts\/6910\/revisions"}],"predecessor-version":[{"id":6917,"href":"https:\/\/css-tricks.com\/wp-json\/wp\/v2\/posts\/6910\/revisions\/6917"}],"wp:attachment":[{"href":"https:\/\/css-tricks.com\/wp-json\/wp\/v2\/media?parent=6910"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/css-tricks.com\/wp-json\/wp\/v2\/categories?post=6910"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/css-tricks.com\/wp-json\/wp\/v2\/tags?post=6910"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}