I took a look at your code, and it should work as expected. Unfortunately, the problem you're running into, has to do with the
Same Origin Policy, which is preventing your script from talking to FreshBooks, because its not running on the same domain. While you've proactively taken some steps, such as setting "crossDomain" to true, the server (API in our case) has to support it as well, so that it can return the correct header values (
Access-Control-Allow-Origin: * if you're curious).
My theory, as to why it works on IE, is because the browser removes any Same Origin Policy restrictions if you're on a site that's part of your "Trust Zone". Generally, when I write javascript apps that
need to talk to FreshBooks, I turn it into a Chrome Extension, since it allows you to
whitelist the sites to allow.
Hope that answers your questions. Let me know if there's anything else I can help you with!