Hi @somespikes,
In addition to @episod’s and @kurrik’s points below about various security permission issues that occur when running on file:// URLs, the specific reason that Web Intent events don’t work on a file: protocol is when you bind an event, we dynamically load some extra script to enable cross-frame communication. Because Twitter now supports SSL (HTTPS) everywhere, we load additional scripts using a protocol-agnostic // URL. This causes the browser to load the resource (hubclient.js) using the same protocol as the host page.
On HTTP or HTTPS, this means it matches the security of the page you’re on, and prevents our script causing SSL mixed-content errors in browsers. The flipside is that on a file: URL the browser attempts to load file://platform.twitter.com/, which of course doesn’t exist.
At some point in the indistinct future we’ll probably fix this, because I appreciate it’s annoying that this situation breaks, but it requires trawling through the plumbing of our script manager and it’s not a top priority for the time being.
Something which should help you in the meantime: You don’t need a full on web server to run your page locally over HTTP. If you’re running on a Mac or other unix-based machine, you can run a single line of python from the directory where your page is being developed:
python -m SimpleHTTPServer
Then, open localhost:8000 in your browser.
On Windows, you can probably do the exact same thing if you have Python installed, or I’ve seen people recommend TinyWeb http://www.ritlabs.com/en/products/tinyweb/ for things like this.
Hope that helps. Please get in touch (here, or @benward on Twitter) if you need any other hints.
Ben