Issue 181: IE7 Modal overlay and content appears below veiwport
Status:  Fixed
Owner: ----
Closed:  Jun 2009
Reported by insiteto...@gmail.com, Feb 27, 2009
I'm not sure if anyone else is having this problem, but I just started 
using nyroModal and discovered I'm having trouble with it and IE7.

What steps will reproduce the problem?
1. Go to http://nyromodal.nyrodev.com/
2. Click Demos
3. Click on 'Gallery Img 1' for example.

The modal overlay should cover the viewport, but instead it appears lower 
on the page. Sometimes, like on the (http://nyromodal.nyrodev.com/) demos, 
it appears below the viewable area on the screen, but the scroll bars 
disappear. I have to hit the ESC key in order to get rid of the non-
existant modal. Is anyone else seeing this problem, or is it just me?

My test environment that has this problem is using the following;
nyroModal v1.4.2, jQuery v1.2.6, Windows XP Prof. SP3, IE7

Thanks,

Spencer


Feb 28, 2009
Project Member #1 nyro...@gmail.com
You said "Sometimes". Does it means it occurs randomly?
Than, could you send a screenshot of what you're seeing please?
Mar 12, 2009
#3 plato...@gmail.com
Hello, insitetools. Are you using mail.ru agent software? As I discovered, it causes
such problem. My detailed report is in  issue #192 .
Apr 9, 2009
Project Member #4 nyro...@gmail.com
any news about this issue?
Apr 12, 2009
#5 zasta...@poczta.fm
Hello.
I confirm issue described by insitetools.
IE7 is not properly recognized by the script. 
Here was my example:
I created a site and was opening modals. Everything worked perfectly in: Safari, 
Firefox, Opera, IE6.
But something was wrong with IE7 - it was constant situation, which means it was 
repeating every time I was opening site with IE7. The same symptoms as described by 
insitetools.

I started to search and post by platosha show me the way.
I replaced
var browserVersion = (userAgent.match( /.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/ ) || 
[0,'0'])[1];

with platosha fix: 

var browserVersion = (userAgent.match( /.+(?:rv|webkit|khtml|opera|msie)[\/: ]([\d.]
+)/ ) || [0,'0'])[1];

And it changed nothing.

So I added a line: var isIE6 = false;
It means I forced the script not to use any IE6 method of generating modal.

AND IT FIXED everything in IE7.

Summary: something is wrong with the line: var isIE6 = (/msie/.test(userAgent) 
&& !/opera/.test(userAgent) && parseInt(browserVersion) < 7);

It does not recognize IE7 well. Must be fixed.

If you will find any idea to fix it - just let me know: zastawka@poczta.fm

ps. Your script is AWESOME. I wanted it to work in xhtml 1.1 and I did it;) It 
validates and with serving content as xhtml it is the only modal-script I know works 
well (I mean not only page code is xhtml 1.1 valid, but also server is serving 
content as xhtml not text/html).
Apr 13, 2009
#6 plato...@gmail.com
There's a bug in IE7 that returns IE6 user agent string. This is possibly your case,
read here:

http://jamazon.co.uk/web/2008/07/23/an-ie7-bug-that-returns-msie-60-user-agent-string/

Please check and report your user agent in IE7.
Apr 13, 2009
#7 zasta...@poczta.fm
Hello.
I have attached jpg file with the result of javascript:alert(navigator.userAgent) 
command as adviced in the article you gave me.

Please check it out.
useragenttest.jpg
57.6 KB   View   Download
Apr 13, 2009
#8 zasta...@poczta.fm
Something is wrong with the attachement (when I try to download jpg file posted few 
minutes ago it gaves me "wrong header" error), so I uploaded it to my server.

Here is the link: http://www.avicodecs.pl/test/useragenttest.jpg
Apr 13, 2009
#9 zasta...@poczta.fm
platosha: workaround given by the jamazon.co.uk in their article does not solve the 
problems with IE. So here is my opinion in this case: lets use some special features 
built in IE to make very good IE recognision.

My idea is to use <!--[if IE]> comments. Especially <!--[if IE lt 7]>

<!--[if IE gt 6]>
<script type="text/javascript">
var isIE6 = false;
</script>
<![endif]-->

It is just an example. It must be modified to pass isIE6 variable to nyroModal 
script.
Apr 13, 2009
#10 zasta...@poczta.fm
Ok.
Most reliable method of detecting IE version is like I said browser comment.
Like:
<!--[if lt IE 7]>
<script type="text/javascript">
$.nyroModalSettings(
	isIE6: 'true'
); 
</script>
<![endif]-->
<!--[if gt IE 6]>
<script type="text/javascript">
$.nyroModalSettings(
	isIE6: 'false'
); 
</script>
<![endif]-->

But it does not work (maybe someine will find some time to fix this method).

Other one is just changing original line of nyroModal detecting mechanism for:

var isIE6 = (/msie/.test(userAgent) && !/opera/.test(userAgent) && parseInt
(browserVersion) < 7 && !window.XMLHttpRequest);

"&& !window.XMLHttpRequest" helps us find everything that is not IE6 :)

And now all my problems with IE6/IE7/IE8 are gone:) 

I still think that conditional comments are better, but this one is nice trick too;)
May 14, 2009
Project Member #11 nyro...@gmail.com
sorry for the delay.
In the next release, I will use the 'window.XMLHttpRequest' test.
May 14, 2009
Project Member #12 nyro...@gmail.com
After a while, the version 1.5.0 is now here and should fix this issue.
Jun 2, 2009
#13 zasta...@poczta.fm
Yes - it fixes the problem well. You can close this as fixed. 
Jun 2, 2009
Project Member #14 nyro...@gmail.com
great, thanks!
Status: Fixed