Fixing quotes with Javascript
Marek Prokop has a cunning way of getting Internet Explorer to style <abbr>
elements (IE, for reasons unknown, usually ignores their existence both as stylable elements and through the DOM). A comment by Mr. Farlops on diveintomark inspired me to have a go at fixing IE’s equally faulty quotes behaviour using javascript. Rather than detecting IE by checking for the presence of document.all
, I decided to use a Microsoft specific proprietary extension: DHTML Behaviors.
The HTC file (fixquotes.htc
)looks like this:
<public:attach event="oncontentready" onevent="init();" />
<script>
function init() {
element.innerHTML = '“'+element.innerHTML+'”';
}
</script>
The additional CSS required to use it (and to make quotes look pretty in better browsers), based on Mark Pilgrim’s code from The Q tag, looks like this:
q {
behavior: url(fixquotes.htc);
quotes: '\201C' '\201D' '\2018' '\2019';
}
q:before {
content: open-quote;
}
q:after {
content: close-quote;
}
There are two main disadvantages to this solution: It introduces an invalid property to your CSS, and it could result in duplicated quotes in IE 7 should that browser finally fix the lack of quote element support.
Mark Pilgrim advocates using a server side script to mark up quotations with the relevant HTML entities. I’m not too keen on this solution purely because I tend to surf the web using Lynx 2.7 from University every now and then, and Lynx 2.7 displays some entities untranslated resulting in sites looking like this:
The guy in charge of “doing techie stuff for The Register” emailed me today to say that The Register is now sporting a shiny new RSS 1.0 feed. It validates and everything. Woohoo! Guess I’ll have to find somebody else to pick on now. [winking face]
(This issue is fixed in Lynx 2.8).
Time for bed
, said Zebedee.
More recent articles
- AI-enhanced development makes me more ambitious with my projects - 27th March 2023
- I built a ChatGPT plugin to answer questions about data hosted in Datasette - 24th March 2023
- Weeknotes: AI won't slow down, a new newsletter and a huge Datasette refactor - 22nd March 2023
- Don't trust AI to talk accurately about itself: Bard wasn't trained on Gmail - 22nd March 2023
- A conversation about prompt engineering with CBC Day 6 - 18th March 2023
- Could you train a ChatGPT-beating model for $85,000 and run it in a browser? - 17th March 2023