How to write cross-browser compatible userscripts? - cross-browser

My past attempts at writing userscripts ended working in Firefox, but not Opera, because of subtle differences between the two browsers. Is it possible to use of those libraries that abstract the differences away like jQuery inside userscripts to make them cross-browser compatible with little effort?

Yes, as the google search for greasemonkey jquery shows:
http://userscripts.org/topics/2324
http://joanpiedra.com/jquery/greasemonkey/
As the posts in the first link say, it means you add a relatively large jQuery cost to your userscript. It's not very hard to make the code work across Firefox and Opera -- you don't have to worry about IE :)

Related

Is there a Reliable and Current Resource Listing Browser / Browser Version Bugs Available Anywhere?

I was surprised to be unable to find a solid resource that documents browser CSS, HTML and Javascript bugs. Obviously there are sites like http://caniuse.com/ and http://www.quirksmode.org/ which take things from the other direction, documenting feature implementation and sometimes noting bugs and partially implemented features, but is there a site which lists known bugs and workarounds on a per-browser/browser version basis?
I find
http://caniuse.com/
incredibly useful for knowing which features are supported by which browsers. Hope this helps
Just to make things slightly easier to find, here are resources suggested so far in the comments:
http://www.positioniseverything.net/explorer.html
– IE 5+ bugs, though not updated since 2009
http://www.paulirish.com/2009/browser-specific-css-hacks
– Paul Irish's list of common browser hacks, again not updated since 2009.
What I found pretty interesting are the different doctypes. Not only that you can trigger QuirksMode (an IE 5.5-like rendering in InternetExplorer - don't know how other browsers handle that) but also that you can have an Almost-Standard-Mode. http://hsivonen.iki.fi/doctype/#Sending%20XHTML%20as%20text/html%20Considered%20Harmful
Here's a list of bugs in IE8: http://jhop.me/ie8-bugs
All the other stuff I found is most likely gone. IE6 is nearly dead (http://www.ie6countdown.com/#chart), IE7 is also used by just a minority (http://theie7countdown.com/) ... now it's just depending on what you want to support. If you still want/have to support IE7 or IE6, I'd look at the links posted by Pedr. That's where I found all the css-bugs, excepted by one - the IE6 PNG bug. But Safari also has his problems with the PNG transparency and the gamma channel :)
PNG Problem (IE6, IE7 and Safari): http://morris-photographics.com/photoshop/articles/png-gamma.html
That's all coming to my mind. I mostly skip the PNG problem by minifying the png and gif files before uploading them into a live-system by using http://imageoptim.com/.
I don't know if anyone listed the JS-Bugs ... I just know of missing functions and that's where you could use a framework like jQuery or something not that blown-up :)

dynamic stylesheet languages & browser support

I am playing around with the idea of using a dynamic stylesheet language to add functionality to the traditional CSS. This would come in very handy for a project I am working on. Thus far I have my eye on LESS.
I would like to have it client based, so probably JS would be my choice. However, I have some questions that I hope someone could give me a tip on:
LESS states it works in Chrome, Safari and FF on client side. What about IE? No support at all? How would the CSS behave in IE then?
are there any other comparable tools besides of LESS? I have looked into SASS, however it seems to be Ruby based, which I am completely unfamiliar with.
LESS supports IE. I use that functionality.

how to make css3 and html5 compatible website for all browsers including IE7 and later

Is there any single framework with which I can build a css3, html5 website that is compatible for all browsers including IE7 and later? Can http://html5boilerplate.com/ boilerplate help me in this?
You will never get the IE7 or IE8 rendering engine to achieve full compatibility with HTML5, CSS3, and other modern technologies. They are simply not capable of it.
However there are some hacks, tools and plugins which can get you part of the way.
Tools like Modernizr will help you by allowing you to detect which features are supported, to give your site a chance to work around it.
jQuery is a great library anyway, but is particularly good in this context because it abstracts a lot of browser differences away from the developer. Some things are easy in most browsers but a real pain in IE; jQuery takes a lot of that kind of stuff and makes it easy regardless.
Dean Edwards' IE7.js and Selectivzr are both Javascript libraries that give IE support for lots of the CSS selectors which were missing in older versions. This allows you to write your stylesheets without worrying so much about what IE supports. (IE7.js also fixes a number of IE's other glitches and missing features too)
CSS3Pie is a hack for IE that adds support for CSS border-radius, gradients and box-shadow.
There are in fact a whole load of hacks along these lines, all aimed at adding features to older versions of IE which it is missing. Modernizr's website has a big list of them here: https://github.com/Modernizr/Modernizr/wiki/HTML5-Cross-Browser-Polyfills
However there is one big caveat to all of this. Speed. IE<=8 is a slow browser. It has a slow Javascript engine. Virtually all of these hacks are javascript based. You might get away with running a few of them on any given site, but trying to use enough of them to give IE anything like full support for HTML5 and CSS3 will slow the browser down to the point of being unusable.
There is one other angle to approach this question though, and that's Google's Frame plugin for IE. This basically installs the entire Google Chrome browser engine into IE. The user is still running the IE shell, but the web page is rendered as it would be in an up-to-date version of Chrome.
This sounds great, but of course it isn't perfect. The main down-side of it is that the end user has to install it manually onto their computer, which means that you as a web developer have no real control over whether it's there or not. So its not something you can just add to your site and expect everything to magically work.
Finally, you may also be interested in CanIUse.com, which gives browser support tables for various features, allowing you to see at a glance what is and what isn't supported in various versions of each browser.
HTML 5 is more an umbrella term for a variety of technologies than any one thing or framework. Really, any implementation you do should degrade gracefully-- and that is what makes the site browser compatible. Detect what the browser supports, and then have alternatives that are legacy friendly.
Check out: http://accessites.org/site/2007/02/graceful-degradation-progressive-enhancement/
And: http://diveintohtml5.ep.io/detect.html
Good luck.
Modernizr is an open-source JavaScript library that helps you build the next generation of HTML5 and CSS3-powered websites.
MS is including it in the ASP.net MVC template projects
html5boilerplate won't help you.
As others have said html5 and css3 are very broad terms, there's no framework that implements all of the features provided by both of these. In fact they are not equally supported in browsers that say that they support them. And more, even W3C guys (who write the specs for html5 and css3) are not yet established on what features they will include or what steps will be required to implement them. You get the idea...
But.. if you narrow your requirements to some specific features, like video, audio tags, canvas drawing, nifty css effects, File API, or others, you CAN find frameworks that implement (or try to mimic) them with available technologies in cross-browser manner (more or less).

How to solve the problems that html page works well in firefox and chrome, but wrong with IE?

I meet a problem that my page works well in firefox and chrome(almost the same look and feel) but very bad in IE. It's time consuming to adjust the differences. Is there any research has been done already to tell the differenceS, or any automation tool to examine the uncompatibilities?
BTW: which tool you guys are using when debugging in IE(like firebug for IE)?
Your best starting point is to always use some kind of "reset mechanism" like Eric Meyer's CSS Reset or framework like HTML5 Boilerplate, they help in reducing differences between browsers (not all, but most of it). If this is not possible (project is already in finishing phase, etc.) you can always ask questions here, check Position Is Everything for description of bugs, Quirks Mode, SitePoint reference and various other sites (Google is your friend :)). Hope this helps.
There is "debugging" tool for IE - IE Developer Toolbar - but it's usefulness can't compare to that of Firebug, Dragonfly and such. IE8+ does have better support for debugging, though… There are some articles that suggest using Visual Studio, but I haven't tried it. Mostly it's just trial and error with IE :).
ie7-js is a JavaScript file that automatically fixes many Internet Explorer bugs for all versions. Works like magic.
For fast and better results in IE you can use CSS Hacks for adjusting the HTML elements.
For IE we have IE Developer AddOn
you can download it here : http://www.microsoft.com/downloads/en/details.aspx?FamilyID=95e06cbe-4940-4218-b75d-b8856fced535
Welcome to the tiresome world of IE.
IE8 has some version of developers tools, hit F12 on your keyboard and it will pop up. (not present in 6&7)
There are many documented bugs in IE, a simple Google Search would help you out better, but a lot cannot be accounted for until you have your site working in FF.
What most developers I know do is to make the site in FF, make small changes for Webkit browsers then go over to IE (not including 6) and debug.
In my experience there really is no way to tell what IE is going to mess up next, so you'll probably just have to deal with it as it happens.

HTML Standards and deviating browsers

This is a story anyone developing web applications is surely aware of - You create a site, which is well coded and elegant in the browser of your choice - until you run it in a different browser, which a lot of the time required hacking and slashing to create a functioning site.
I wish to enquire the techniques used by developers to ensure their code works well the first time around in the plethora of web browsers with all aspects related - such as :xhtml, html5, javascript, css, etc..
As a side note, what developers do about IE progress - with the majority of the world still on IE7, and IE9 only including new css and html standards how long do you think standard practice will(if ever) take to achieve?
I am quite interested in your response, as I cringe at the thought of cross browser compatibly issues.
My advice: Use a decent CSS reset or framework. Good CSS frameworks are: 960, Blueprint, YAML and YUI grids.
For your javascript you should use a library like: JQuery, mootools or Dojo. You will still have a few browser incompatibilities, but using any of these tools should fix about 90% of them.
Good luck! (ps: I use Mootools and Blueprint)
If you really want to have some fun with the IE6 crowd, try this: http://ie6update.com/
All kiding aside, with a strong understanding of box-model tactics, a great framework, plus quirksmode.org, you should have no reason to have to do a bunch of exotic hacks to make your site work. Design intelligently for standards that are viable today and save the bleeding edge techniques for demo sites. High-value corporate sites don't HAVE to be exotic, they need to be good and reliable. Otherwise, be willing to design parallel sites so that those who refuse to update can at least get by. Most of all, stick to the standards...a few W3 errors is too many.
Understand your audience too. I can't tell you how many designers do dark on dark and small fonts for older crowds. Likewise for using exotic javascript or worse flash where it's not appropriate. Solicit feedback from others....in reality, even if we "get" this game, we really only really understand our own preferences.
Practice progressive enhancement. For example, Jquery UI will round corners, but will gracefully degrade to square for the IE (behind) crowd. Consider using HTML 4.01 strict as opposed to XHTML because it is closer in syntax to the future, HTML5. (XHTML is no longer being advanced anyway)
Finally, test everything you do in multiple browsers or in a tool like Adobe's browser labs. Turn off Javascript and CSS...is the result acceptable? Run without flash...does your site work? How does it look on a mobile browser?
It's not a fun game to play sometimes, but it's what makes us professionals. Good luck!
I am developing for all major browsers out there (IE 6+, Firefox 3+, current Safari, Chrome, Opera 9.5+). My main advice to keeping code clean and eliminating extreme hacking sessions is the following: Test your page simultaneously in all Browsers. It is a lot easier to fix multiple small Problems than fixing a complete page in a single pass. Style issues are really easy to fix when working this way. JavaScript is a bit more challenging, but still much easier when working like this. jQuery often helps with this kind of problems. I include the new standards here and there but i am making sure, that graceful degration takes place. Standards compliant browsers get the full experience. Older ones get less eye candy while still delivering a working page.
Learn the standards.
Write code according to the standards.
Test the code in popular browsers, and see where it breaks.
“The standards” are HTML, CSS, JavaScript and the DOM. jQuery does a lot to smooth out JavaScript and DOM inconsistencies between browsers, and is a bit of a nicer interface to the DOM in my opinion.
“Popular browsers” at the time of writing are IE 6–8, Firefox 3, and the latest versions of Safari, Chrome and Opera. Safari and Chrome have hardly any differences as they use the same rendering engine, and Safari, Chrome, Opera and Firefox have very few differences as they’re all about the standards.
I cringe at the thought of cross browser compatibly issues.
They‘re really not that bad. (When you ignore IE. And its issues are at least reasonably Googleable when you encounter them.)
I think it is important you start with a good set of defaults and follow best practices, it is not much of a hassle to work with deviating browsers. I worked on http://html5boilerplate.com so we have a list of links up there (along with the actual boilerplate) that make a web developer's job much easier.