views:

344

answers:

2

So here's the deal. We have a Flash application that is running within an HTML file. For one page we call a legacy reporting system in ASP.NET that is within an IFRAME. This page then communicates back to the Flash application using cross-domain scripting (document.domain = "domain" is set in both pages.

THIS ALL WORKS.

Now the kicker. Flash has history tracking enabled. This loads the history.js file that created a div tag to store page changes so the back and forward buttons work in the browser.

Which works for Firefox and Chrome as they create a div tag.

HOWEVER

In Internet Explorer, history.js creates another IFRAME (instead of a DIV) called ie_historyFrame. When the ScriptResource.axd code attempts to access this with:

var frameDoc = this._historyFrame.contentWindow.document;

we get an "Access is Denied" error message. ARGH!

  • We've tried getting a handle to this IFRAME and inserting the document.domain code. FAIL.
  • We've tried editing the historytemplate.html file that flex also uses to include document.domain... FAIL.
  • I've tried to edit the underlying ASP.NET page to disable history tracking in the ScriptManager control. FAIL.

At my wit's end on this one. We have users who need to use IE to access this site. They are big clients who we cannot tell to just use Firefox.

Any suggestions would be greatly appreciated.

A: 

I understand it's a last-ditch scenario, but you should consider making the case that IE may not be possible to support. You'll need objective evidence, some samples that clearly show the problem, and a well-rehearsed spiel about the benefits of remaining standards-complient instead of coding specifically to a (probably dated) version of IE.

It's never guaranteed, but if you can convince them that there are objective benefits which will lower both the short and long-term costs then it's worth trying--just remember that for many clients are concerned with the business-case and not the techinical case.

STW
A: 

Not sure but sending this header from the server might work:

// in PHP...
header('P3P: CP="IDC DSP COR CURa ADMa OUR IND PHY ONL COM STA"',true);

I've used it for setting cookies from JS code in an iframe.

Christian Sciberras