Black Friday = Pricewatch Bekijk onze selectie van de beste Black Friday-deals en voorkom een miskoop.

Frame redirect naar zichzelf ipv juiste pagina @ IE7

Pagina: 1
Acties:

  • dsmeef
  • Registratie: Oktober 2002
  • Laatst online: 08-06-2024
De situatie is als volgt, ik heb een subdomein (= d1) waar de site op staat, en ik heb een domein (= d2) waar een frameset staat om de site (van d1) te tonen.

Dit werkt prima in Firefox, maar in Internet Explorer werkt dit niet. Als je een linkje aanklikt op een pagina op d1, redirect internet explorer je niet naar de pagina waar je naar toe moest gaan, maar naar de pagina waar je vandaan kwam.

de HTML van het frame is:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?xml version="1.0" encoding="iso-8859-1"?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>naam</title>
</head>

<frameset cols="*">
    <frame marginwidth="0" marginheight="0" frameborder="0" src="http://sub.domain.nl/scripts/formHandler.php?action=WelcomeAction&language=de" name="website" />
</frameset>

</html>


en de HTML van de pagina waar je op het linkje klikt is:

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
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
   
<html>
<head>
<title>naam</title>

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

<script type="text/javascript">
//<![CDATA[

function submitForm() {
    document.myForm.submit();
}

function setCategory( categoryId ) {
    document.myForm.destination.value = "nieuweUrl.php&categoryId=" + categoryId;
    submitForm();
}

//]]>
</script>

</head>

<body>

<form name="myForm" action="formHandler.php" method="post" enctype="multipart/form-data" onsubmit="javascript:submitForm();">
<input type="hidden" name="destination" value="nieuweUrl" />

...

<div onclick="javascript:setCategory('1')">
    <div class="b i">Categorie</div>
    <div class="categoryImage" style="background:url(../category/1404.jpg) no-repeat; background-position: 3px 11px;"><img src="../gfx/categoryBorder.png" alt="" /></div>
</div>

...

</form>

</body>

</html>


de werking is: destination value wordt gevuld met een url, formulier wordt afgehandeld in php en daarna redirect php via header location naar de nieuwe destination. zo zou het in ieder geval moeten gaan, maar internet explorer redirect de gebruiker weer naar de pagina waar hij vanaf kwam (dus de index pagina feitelijk)

Om het nog wat vreemder te maken, ook nog deze situatieschets.. Als je op die eerste pagina (@ d1) eerst inlogd, dan werkt het daarna wel! dan kom je wel op de goede pagina uit.. Het inlog stukje werkt via Ajax, en doet dus niets met de pagina an sich, de linkjes blijven hetzelfde

nou heb ik een vermoeden, dat het met het security model van IE7 te maken heeft (anders werkte het ook niet in FF).. het is zo dat het frame op een ander ip staat als de site, maar wel op dezelfde server, in dezelfde ip range.. zou dit het zijn? zo ja, is dit aan te passen door ons op de server, maar dat doe ik liever pas nadat ik zeker weet dat het dit probleem is, ivm het offline zijn van de site in de tussentijd.. het zou dan dus iets zijn als de "Cross-Domain Barrier" of de "Cross-Domain Frame Navigations" stukjes waar ik hier over las: http://msdn.microsoft.com/en-us/library/bb250493.aspx ? of is er misschien een work-around om het wel goed te laten werken?

  • moozzuzz
  • Registratie: Januari 2005
  • Niet online
HTML:
1
2
3
4
5
6
7
8
9
10
11
12
<?xml version="1.0" encoding="iso-8859-1"?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>naam</title>
</head>

<frameset cols="*">

Je mixt XML, XHTML en een HTML4.x frameset door mekaar.
code:
1
enctype="multipart/form-data"

Zal wel niet nodig zijn als je enkel maar één variabele submit.

Persoonlijk zou ik je link-structuur niet met het input/form systeem opbouwen. Maar wellicht zit je al te ver in je project om daarop op terug te keren.

Helpt dit?
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
function setCategory( categoryId ) {
    document.myForm.destination.value = "./nieuweUrl.php&categoryId=" + categoryId;
    submitForm();
}

// of

function setCategory( categoryId ) {
    document.myForm.destination.value = "http://d1.domain.nl/nieuweUrl.php&categoryId=" + categoryId;
    submitForm();
}

  • dsmeef
  • Registratie: Oktober 2002
  • Laatst online: 08-06-2024
het gaat erom dat elke pagina variabele door kan sturen zonder dat je weet waar de gebruiker uit gaat komen. de gebruiker heeft een soort shop omgeving waar hij een product samenstelt en opmaakt, waarna hij uitkomt op de door hem gekozen volgende pagina. vandaar deze manier.. de multipart is omdat je ook uploads kunt sturen. zoals gezegd, mijn voorbeeld code was ontdaan van vele regels code, die volgens mij niet relevant zijn voor deze vraagstelling

dat van die frameset zal ik even nakijken, dat zou wellicht ook nog iets kunnen zijn, al had ik wel al een totaal andere frameset geprobeerd

en de 2e oplossing die je me geeft is al hoe het werkt aan de backend, de volledige url wordt meegestuurd in de redirect, helaas lost dat dus niets op..

ik denk dat ik morgen ochtend vroeg de site maar laat omgooien naar een en hetzelfde ip, dan kan ik dat tenminste uitsluiten ook :)