liveclipboard is an interesting idea from Ray Ozzie. He's also blogged the process and brainstorming behind it. This is great..

Unfortunately it doesn't work in Opera.

The reason appears to be a bug in FireFox regarding how it evaluates XPath expressions. The document.evaluate spec states that the context node must belong to the same document as the method is called on. (The style is somewhat convoluted, I'm not 100% sure I've understood the phrase If the XPathEvaluator was obtained by casting the Document correctly but I can't think of any other reading that makes sense).

So, if you call document.evaluate( expression, someOtherDocument …), Opera follows the spec to the t and throws an exception while FireFox doesn't. The liveclipboard script relies on this FireFox bug.

The fix is simple: import the nodes to the current document before XPathing them. For example:

hCardXmlNode = domParser.parseFromString(hCardXmlString, 'application/xml');

should be

hCardXmlNode = document.importNode(domParser.parseFromString(hCardXmlString, 'application/xml').firstChild, true);

One of these cases where testing in multiple browsers will highlight your assumptions about web standards.


9 thoughts on “liveclipboard

  1. One of these cases where testing in multiple browsers will highlight your assumptions about web standards.

    That's what I always told people when see them testing only in Firefox and IE.Based on my experience I can say that sometimes even testing in 4 browsers doesn't help, and you need to test in previous versions of browsers too. 😉

  2. Technical issues aside, this is a great idea!I worked on pub/sub, xml based tools in the Air Force and this seems like a nice killer app (at least, demo) that can easily show people usefulness of this idea.I can't remember the number of times we'd demo pub/sub and what it could do.. only to get an answer back like:"so… it's like google?"

  3. sypasche: yes, I tried looking for a Firefox bug. I couldn't find anything that looked directly relevant. If you want to file one there is a pretty good test case here: free to refer to this blog post too, of course. I would appreciate if you post the bug number here so that I can CC myself over there and keep an eye on it.

  4. Something else the liveclipboard devs should fix is that the script currently throws embarassing JS errors if you paste something that isn't XML 🙂

  5. Thanks for the investigation. I'll try your suggestion and, if I get it to work, incorporate it into the next update of our control on the example page.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s