You are here

IE8 Inline Frames simple fix

Submitted by Jason on Wed, 05/06/2009 - 20:28

I noticed today that internet explorer 8 was not displaying a couple inline frames in our portal.

Hitting the compatibility mode button made them display.  So I searched and found a sungard faq/solution, putting the meta tag in nested-tables for IE=EmulateIE7 would force all visiting IE8 users into the compatibility mode.

It didn't work.  IE=7 IE=5 didn't work also. 

I next tried to grab the CInlineFrame.java file from a version of uportal that has a fix in place.  The central problem isn't with ie8.  The problem is that CInlineFrame.java has browser version checks in it. 

I couldn't get it to compile.  I'm not that great with java though:), so someone might be able to do that.

What I finally did, was google and found this:

http://www.ja-sig.org/wiki/display/UPC/CInlineFrame+and+IE7+Workaround

Edit $CP_WEBINF/uPortal/org/jasig/portal/channels/CInlineFrame/CInlineFrame.ssl

Change both the CInlineFrame/noIframe.xsl lines to CInlineFrame/Iframe.xsl.  You can leave the noIframeSupport title in place though.

And presto, Inline frames 'work' in ie8 again.

 

Luminis Version:

How-To:

Modification:

Comments

I had this same problem when I tested IE8it  and found that it wasn't displaying right. At the time it was still in beta so I wasn't to concerned.

It's nice to know there is a fix out there. Thanks for sharing.

We're still on Luminis III (3.3.3.79) and I found the file you mention in a different directory: $CPROOT/stylesheets/org/jasig/portal/channels/CInlineFrame/

I made the changes you suggested, bounced Luminis, nada.  IE8's behavior with inline frame channels is the same.  Is maybe a cache that needs to be cleared like with .jsps?

I can't find a CInlineFrame.java file to modify and the IE8 X-UA Compatibility Meta Tag:

<meta http-equiv="X-UA-Compatible" content="IE=7" />

doesn't work either :/

Hrm.  I wonder why it wouldn't work in Luminis 3.  Odd.

 

You can also try the meta IE=EmulateIE7

That is what the sungard support faq said.

I don't get it either.  I made the changes to the CInlineFrame.ssl like you suggested, here's it's content:

<?xml version="1.0"?>

<?xml-stylesheet title="IFrameSupport"
 href="CInlineFrame/Iframe.xsl" type=quot;text/xsl" media="explorer"?>
<?xml-stylesheet title="IFrameSupport"
 href="CInlineFrame/Iframe.xsl" type="text/xsl" media="netscape"?>
<?xml-stylesheet title="noIFrameSupport"
 href="CInlineFrame/Iframe.xsl" type="text/xsl" media="explorer"?>
<?xml-stylesheet title="noIFrameSupport"
 href="CInlineFrame/Iframe.xsl" type="text/xsl" media="netscape"?>

<document>
</document>

stop/started and I still see this message when viewing inline frame channels in IE8:

- - - - - - - - - - - - - - - - - - - - - - -
This browser does not support inline frames.
Click here to view content in a separate window.
- - - - - - - - - - - - - - - - - - - - - - -

There are two .xsl files in that same directory: Iframe.xsl and noIframe.xsl. Editing or removing them doesn't seem to cause any behavior changes in the inline frame channels either. For example, I edited Iframe.xsl and hard coded the iframe src to be http://www.google.com/, stop/started the services and my change isn't reflected. I guess Luminis 3 isn't using these files?

Oh, and the meta tag trick that SunGard suggests (can you post the link where this?) won't work as it's not IE that's choking on iframes - it actually displays them just fine.

The work around worked great in 4.2.  However, the fact that Microsoft has chosen to block iframes makes me very uneasy to continue using iframes to publish content.  Are iframes a dying technology?  Will they be supported in Luminis 5 based on liferay?

We are well into the planning process for all of our channels and our plan has been for the content to live inside of our CMS and then render it inside of a channel.  Are there other ways to accomplish the same thing?  What is the best approach to insure that we do not have to recreate all of our channels when upgrading to Luminis 5.

Is there a way to do this inside of a portlet? Does anyone have any experience with rendering portlets?  If so, is this a better approach since as I understand portlets are the "standard" and will be support in Luminis 5.

The IE8/Luminis iframe issues aren't due to MS dropping support for iframes, they're due to IE8 failing some sort of user agent check in Luminis code (CInlineFrame.java in LumIV, god knows what in LumIII).

If you create a TCC with a free form text/HTML sub-section and drop iframe code in there it works just fine.

I would say you could drop iframes altogether and juse use Ajax (or an "Ajax Channel"...I *think* somebody posted the code on here somewhere). This avoids using an iframe and is supported in every major browser from IE 6 (or earlier) onwards.

The only reason I'm against iframes is the inconsistant manner in which they render in a browser. Luminis tries to help with this, but there's only so much somebody can do and stuff keeps changing as updates come out. Ajax, by and large, is consistant across browsers once you get it going.

It makes sense to alter the Luminis browser compatability checks.

It is same to assume that any browser will support IFrames as default, and only have the XSL present the "your browser does not support IFrames" view for older than IE6. This should probably be put into a noframes tag as well... (then if your browser does not support IFrames it should report it rather than Luminis doing the work).

There may be some neat scripting alternatives to IFrames, but until the pages on the internet are nice and tidily well marked up... there will be problems with CWebProxy and other wrapper inclusion technology.

Hopefully by the time Luminis 5 comes out we will be well and truly up to speed on jQuery.

Derek
University of Leeds, UK

I had though of doing that initially. 

One of our frames is /cp/school/schedule though.  I had a tough time with my somewhat limited ajax (jquery) experience.  the schedule is a fully formed html page with javascript of its own, and my ajax call to load it failed. 

Other more simple pages loaded fine though. 

The code is simple:

 

<script type="text/javascript">
$(document).ready(function() {
 
        $("#someid").load("somepage.html");
   
});
</script>

 

And then some div with an id=someid as the target container. 

According to FAQ 1-5AT3Y9, a corresponding edit to CpipInlineFrameChannel.ssl stored in cpip.car also needs to be made. At least, if you have CPIP iframe channels.

OOB I don't believe the inline frame channels should work for anyone with IE8 (not in "Compatibility Mode"). We are using 4.2 and are having this issue, so if it's working for you, then I'd love to know how.

Can you please confirm that you are looking at inline frame channels and using IE8 without compatibility mode enabled?

Thanks.

We installed IE8, and everything seemed to be working.

Then we un-ticked "compatability mode for intranet". Immediately all of the IFrame channels said that the browser did not support IFrames.

Edit of the .ssl file made the Sungard supplied IFrame channel type start working

Unfortunately we have some of our own channel types where we will have to update an .ssl in the car file.

Is it possible to make our car files refer to the standard IFrame channel ssl? (Or is this just asking for trouble?)

Derek

University of Leeds, UK