Ik heb een javascript gemaakt die de resolutie detecteert en vervolgens wegschrijft naar een cookie. Vervolgens lees ik in PHP de cookie uit en bouw ik de website op.
Enig probleem waar ik tegen aan loop is dat ik in IE6 "privacy settings = high" niet kan detecteren. Bij privacy high setting accepteert IE6 namelijk mijn cookie niet. Ik kan wel detecteren of privacy settings op "block all cookies" staat. Dit doe ik met "if (window.navigator.cookieEnabled)".
Er zijn twee mogelijke oplossingen:
(1) Ik moet kunnen detecteren of "privacy settings = high" aan staat.
(2) Ik moet het voor elkaar krijgen dat bij "privacy settings = high" ook mijn cookie wordt geaccepteerd.
Geen oplossing is:
- Een test cookie plaatsen en vervolgens via de URL meegeven of het gelukt is. De URL
wordt nl. al gebruikt door phpwcms waar ik gebruik van maak.
- Een global var gebruiken en die uitlezen om te checken of het cookie script al is
doorlopen. Mijn provider accepteert geen global vars.
Ik zie dat GOT ook geen rekening heeft gehouden met "privacy settings = high", als ik
namelijk met "privacy settings = high" inlog blijft ie hangen. Met alle andere
settings gaat het wel goed.
Voor de volledigheid mijn javascript:
Enig probleem waar ik tegen aan loop is dat ik in IE6 "privacy settings = high" niet kan detecteren. Bij privacy high setting accepteert IE6 namelijk mijn cookie niet. Ik kan wel detecteren of privacy settings op "block all cookies" staat. Dit doe ik met "if (window.navigator.cookieEnabled)".
Er zijn twee mogelijke oplossingen:
(1) Ik moet kunnen detecteren of "privacy settings = high" aan staat.
(2) Ik moet het voor elkaar krijgen dat bij "privacy settings = high" ook mijn cookie wordt geaccepteerd.
Geen oplossing is:
- Een test cookie plaatsen en vervolgens via de URL meegeven of het gelukt is. De URL
wordt nl. al gebruikt door phpwcms waar ik gebruik van maak.
- Een global var gebruiken en die uitlezen om te checken of het cookie script al is
doorlopen. Mijn provider accepteert geen global vars.
Ik zie dat GOT ook geen rekening heeft gehouden met "privacy settings = high", als ik
namelijk met "privacy settings = high" inlog blijft ie hangen. Met alle andere
settings gaat het wel goed.
Voor de volledigheid mijn javascript:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
| <script language="javascript">
// Dit javascript bepaalt de huidige schermresolutie en schrijft dit weg naar een
cookie
<!--
//Bepaal browser type en versie
var browsername = (navigator.appName);
var ieversion = (navigator.userAgent.toLowerCase())
var ieversion6 = ((navigator.userAgent.toLowerCase()).indexOf("msie 6"));
var ieversion7 = ((navigator.userAgent.toLowerCase()).indexOf("msie 7"));
// Indien moderne browser, bepaal dan de resolutie (anders altijd op 800x600
weergeven)
if (((browsername == "Microsoft Internet Explorer" && ieversion6 == "25") ||
(browsername == "Microsoft Internet Explorer" && ieversion7 == "25")) || (browsername
!= "Microsoft Internet Explorer")) {
// Indien cookies ingeschakeld, bepaal dan de resolutie (anders altijd op 800x600
weergeven)
if (window.navigator.cookieEnabled) { // Indien cookies enabled: Plaats hieronder het
cookie
var resolutie = readCookie('users_resolution');
if (resolutie) // Indien cookie al bestaat: ga na of resolutie is veranderd
{
if (screen.width != resolutie) // Indien resolutie is veranderd: nieuwe
cookie aanmaken
{
writeCookie();
}
}
else // Indien cookie niet meer bestaat: nieuwe cookie aanmaken
{
writeCookie();
}
}
else // Indien cookies niet enabled: geef alert
{
// alert ("Voor een optimaal resultaat dient u cookies in te schakelen");
}
}
// Hieronder staan alle functions die nodig zijn om resolutie-cookie aan te maken
function eraseCookie(name)
{
document.write ('erase');
createCookie(name,"",-1);
}
function readCookie(name)
{
var nameEQ = name + "=";
var ca = document.cookie.split(';');
for(var i=0;i < ca.length;i++)
{
var c = ca[i];
while (c.charAt(0)==' ') c = c.substring(1,c.length);
if (c.indexOf(nameEQ) == 0) return
c.substring(nameEQ.length,c.length);
}
return null;
}
function createCookie(name,value,days)
{
if (days)
{
var date = new Date();
date.setTime(date.getTime()+(days*24*60*60*1000));
var expires = "; expires="+date.toGMTString();
}
else var expires = "";
document.cookie = name+"="+value+expires+"; path=/";
}
function writeCookie()
{
var today = new Date();
today.setTime(today.getTime()+(999*999*1000));
// var the_date = today;
var the_date = new Date("December 31, 2199");
var the_cookie_date = the_date.toGMTString();
var the_cookie = "users_resolution="+screen.width;
// var the_cookie = "users_resolution="+ screen.width +"x"+ screen.height;
var the_cookie = the_cookie + ";expires=" + the_cookie_date;
document.cookie=the_cookie;
location = '<?$_SERVER['REQUEST_URI']?>';
}
//-->
</script> |
[ Voor 7% gewijzigd door getfirefoxnow op 05-07-2005 16:30 ]