Toon posts:

[DHTML] probleem website met dynamisch laden

Pagina: 1
Acties:

Verwijderd

Topicstarter
hallo geachte tweakers ik zou in dit topic graag even discussieren om een goede oplossing voor een probleem wat ik met mijn site heb op te kunnen lossen.

het gaat om deze site: http://www.diecyde.com

Ik heb hier een soort windows desktop nagebouwt en het is mogelijk om meerdere schermen te laden, deze content van deze schermen moet daarom ook veranderd kunnen worden.
Momenteel gebruik ik de zogenaamde IFRAME om hier de pagina's in te laden,
dit brengt echter 2 grote problemen met zich mee:
  • geen event bubbling meer (gebruikt met het verschuiven van het scherm)
  • alles wat geladen wordt komt in de browser history te staan
Ik zou liever een onzichtbare IFRAME gebruiken en de data laden in een DIV, zodat ik wel event bubbling heb. ( probeer maar wat van de schermen te slepen dan merk je het snel genoeg... (het wordt erger als er meerdere schermen open staan)

Ik zit alleen met de DIV-oplossing met het probleem dat alle links die op een geladen pagina komen te staan niet gebruikt kunnen worden, omdat je dan de browser naar die link stuurt.
En ik wil ook niet iedere link in een nieuwe pagina openen.
Het meest ideale zou zijn dat wanneer je op een link klikt een stuk java de html gaat opvragen via het verborgen IFRAME.

Heeft iemand misschien een elegante oplossing voor dit probleem?

  • JHS
  • Registratie: Augustus 2003
  • Laatst online: 04-01 15:49

JHS

Splitting the thaum.

Gebruik AJAX, genoeg over te vinden :) . Doe je request m.b.v. een xmlHTTPrequest object en pas met behulp van de teruggekregen data een division aan.

DM!


Verwijderd

Topicstarter
JHS schreef op zaterdag 27 mei 2006 @ 12:17:
Gebruik AJAX, genoeg over te vinden :) . Doe je request m.b.v. een xmlHTTPrequest object en pas met behulp van de teruggekregen data een division aan.
Dus je wil zeggen dat ik alle links die op een pagina binnenhaal moet ombouwen naar links met een javascript doel
bv ik wil een andere pagina inladen dus>>
code:
1
 <a href="target.htm">nieuwe link</a>

en alle links ombouwen tot bv
code:
1
<a onclick="load_new_html('target.htm');">nieuwe link</a>

  • orf
  • Registratie: Augustus 2005
  • Laatst online: 01:05

orf

Met Ajax krijg je problemen met cross-site ophalen. Je zult met een serverside script de data moeten ophalen. Dan kun je wellicht in dat serverside script direct links aanpassen met een regex, zodat ze een javascript functie aanroepen die de contents van de huidige div vervangen.

Al met al best een klusje.

Verwijderd

Topicstarter
orf schreef op zaterdag 27 mei 2006 @ 12:25:
Met Ajax krijg je problemen met cross-site ophalen. Je zult met een serverside script de data moeten ophalen. Dan kun je wellicht in dat serverside script direct links aanpassen met een regex, zodat ze een javascript functie aanroepen die de contents van de huidige div vervangen.

Al met al best een klusje.
Jouw voorkeur zou uitgaan naar het ophalen van data aan de serverkant... daar deze data aanpassen en dan sturen naar de client begrijp ik?
dat betekend dus dat wanneer ik een site van een vriend van me in een browser moet laden, ik met PHP zijn site moet downloaden.. daar de links aapassen en dan moet uploaden.
Zou dit niet teveel ongewenste lag mee brengen ipv. clientside de html ombouwen?

  • orf
  • Registratie: Augustus 2005
  • Laatst online: 01:05

orf

Met ajax kun je geen data ophalen die buiten je domein staat. Je kunt geen clientside scripting loslaten op een iframe die data toont van buiten je domein. Serverside lijkt mij de enige oplossing.

Verwijderd

Topicstarter
orf schreef op zaterdag 27 mei 2006 @ 12:35:
Met ajax kun je geen data ophalen die buiten je domein staat. Je kunt geen clientside scripting loslaten op een iframe die data toont van buiten je domein. Serverside lijkt mij de enige oplossing.
Is het niet mogelijk om in DOM een IFRAME aan te maken .. met src naar de doelpagina te wijzen en daarna te pollen naar de IFRAME of de pagina volledig geladen is.
En wanneer dit zover is de data laden uit de IFRAME, aanpassen en dumpen in de DIV?
Dan kan je in principe wijzen naar pagina's buiten het domein.

[ Voor 3% gewijzigd door Verwijderd op 27-05-2006 12:42 ]


  • Borizz
  • Registratie: Maart 2005
  • Laatst online: 02-01 15:55
Verwijderd schreef op zaterdag 27 mei 2006 @ 12:42:
[...]


Is het niet mogelijk om in DOM een IFRAME aan te maken .. met src naar de doelpagina te wijzen en daarna te pollen naar de IFRAME of de pagina volledig geladen is.
En wanneer dit zover is de data laden uit de IFRAME, aanpassen en dumpen in de DIV?
Dan kan je in principe wijzen naar pagina's buiten het domein.
Dit is wel mogelijk... MAAR wat denk je dat er met de plaatjes e de stylesheet verwijzingen gebeurt als je ze in jou DIV kopieert? Juist die wijzen niet meer naar de goede locatie, tenzij de paden absoluut zijn, je hebt ook nog het probleem van conflicterende styles van je eigen website en die van de website in het iframe. En daar komt nog bij dat je niet zomaar het hele document uit je IFRAME naar je DIV mag kopieren, omdat daar ook weer HTML en HEAD, TITLE en BODY tags instaan.

If I can't fix it, it ain't broken.


  • Skit3000
  • Registratie: Mei 2005
  • Laatst online: 20-02 18:40
Ik denk dat het gewoon niet kan op een andere manier dan nu?

Verwijderd

Topicstarter
Borizz schreef op zaterdag 27 mei 2006 @ 12:50:
[...]

Dit is wel mogelijk... MAAR wat denk je dat er met de plaatjes e de stylesheet verwijzingen gebeurt als je ze in jou DIV kopieert? Juist die wijzen niet meer naar de goede locatie, tenzij de paden absoluut zijn, je hebt ook nog het probleem van conflicterende styles van je eigen website en die van de website in het iframe. En daar komt nog bij dat je niet zomaar het hele document uit je IFRAME naar je DIV mag kopieren, omdat daar ook weer HTML en HEAD, TITLE en BODY tags instaan.
Daar heb je idd gelijk in.. dan zou dat ook allemaal aangepast moeten worden... met het risico dat die troep conflikten krijgt

@skit3000
Je zou gewoon de IFRAME zo houden??

  • Skit3000
  • Registratie: Mei 2005
  • Laatst online: 20-02 18:40
Ja, ik zou hem zou houden, je haalt je anders veel te veel werk op je hals zonder dat je nu al kunt zeggen of het gaat werken (door websites in divs te laden enzo) plus dat áls het werkt en je laad de verkeerde website in met foute HTML code, je complete site wordt misvormt.

Verwijderd

Topicstarter
Skit3000 schreef op zaterdag 27 mei 2006 @ 12:59:
Ja, ik zou hem zou houden, je haalt je anders veel te veel werk op je hals zonder dat je nu al kunt zeggen of het gaat werken (door websites in divs te laden enzo) plus dat áls het werkt en je laad de verkeerde website in met foute HTML code, je complete site wordt misvormt.
Je weet niet toevallig hoe ik event bubbling kan laten werken met een IFRAME neem ik aan he ? _/-\o_ _/-\o_ :+

  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 20-02 15:44
Nee, het kan niet zoals jij het wilt. Alleen via je eigen domein kan dit, dus via PHP je pagina's ophalen en dan doorsturen naar de client. Wel lastig overigens aangezien je dan ook de CSS e.d. moet controleren op paden..

[ Voor 25% gewijzigd door djluc op 27-05-2006 13:03 ]


  • Skit3000
  • Registratie: Mei 2005
  • Laatst online: 20-02 18:40
Je zou voor pagina's die op dezelfde server staan als je OS-script extra javascript kunnen toevoegen die de events doorgeeft aan het OS-script zelf. :)

Verwijderd

Topicstarter
Skit3000 schreef op zaterdag 27 mei 2006 @ 13:03:
Je zou voor pagina's die op dezelfde server staan als je OS-script extra javascript kunnen toevoegen die de events doorgeeft aan het OS-script zelf. :)
Dat zou misschien nog een hoop op kunnen lossen.

Alhoewel ik het ook wel zie zitten om php alle html uit elkaar te laten slopen en dan op een juiste manier in elkaar laten zetten :D

  • Borizz
  • Registratie: Maart 2005
  • Laatst online: 02-01 15:55
Verwijderd schreef op zaterdag 27 mei 2006 @ 13:10:
[...]


Dat zou misschien nog een hoop op kunnen lossen.

Alhoewel ik het ook wel zie zitten om php alle html uit elkaar te laten slopen en dan op een juiste manier in elkaar laten zetten :D
Ik ben bang dat dat niet zal gaan werken, je zult veel problemen tegen komen, wat doe je bijvoorbeeld met een site die frames gebruikt? En wat gebeurt er met de javascript code op die website? Als je dat allemaal correct af wilt handelen ben je een browser aan het schrijven..
Maar als het alleen voor het verschuiven van de vensters is... Je hoeft er in principe alleen maar voor te zorgen dat de titlebar zich altijd onder je muiscursor bevindt, dan heb je geen problemen met events op je iframe.

Waarom zou je een ingewikkelde oplossing gaan bedenken voor iets wat ook op een makkelijke manier op te lossen is?

Je zou eens hier kunnen kijken, dat is iets wat ik een paar jaar geleden gemaakt hebt, misschien dat je wat aan het script erachter hebt.

[ Voor 10% gewijzigd door Borizz op 27-05-2006 13:54 ]

If I can't fix it, it ain't broken.


Verwijderd

Topicstarter
Borizz schreef op zaterdag 27 mei 2006 @ 13:47:
[...]

Ik ben bang dat dat niet zal gaan werken, je zult veel problemen tegen komen, wat doe je bijvoorbeeld met een site die frames gebruikt? En wat gebeurt er met de javascript code op die website? Als je dat allemaal correct af wilt handelen ben je een browser aan het schrijven..
Maar als het alleen voor het verschuiven van de vensters is... Je hoeft er in principe alleen maar voor te zorgen dat de titlebar zich altijd onder je muiscursor bevindt, dan heb je geen problemen met events op je iframe.

Waarom zou je een ingewikkelde oplossing gaan bedenken voor iets wat ook op een makkelijke manier op te lossen is?
Ik zit net te denken om alle IFRAME's bij verslepen en resizen te verbergen.
Zodat het resizen gewoon door kan gaan.
T is zeker geen mooie oplossing maar denk wel een goede.

Misschien zouden browser programeurs in objecten zoals het IFRAME een kleine boolean hebben moeten inbouwen zodat je simpel met java had kunnen aangeven of je event bubbling wil ja of nee :D

  • Skit3000
  • Registratie: Mei 2005
  • Laatst online: 20-02 18:40
Je kan ook tijdens het verslepen van een venster een onzichtbare div over het iframe heen plaatsen die wél reageert op events en zodra het slepen stopt deze div weer verwijderen.

Verwijderd

Topicstarter
Skit3000 schreef op zaterdag 27 mei 2006 @ 14:17:
Je kan ook tijdens het verslepen van een venster een onzichtbare div over het iframe heen plaatsen die wél reageert op events en zodra het slepen stopt deze div weer verwijderen.
Hmmz geen id kan dat eigenlijk wel??? moet ik zeker een z waarde instellen?

  • funkwurm
  • Registratie: December 2005
  • Laatst online: 22-02-2021
Skit3000 schreef op zaterdag 27 mei 2006 @ 14:17:
Je kan ook tijdens het verslepen van een venster een onzichtbare div over het iframe heen plaatsen die wél reageert op events en zodra het slepen stopt deze div weer verwijderen.
Nee, dan kan niet, je kunt geen elementen over een iframe heen plaatsen. Alleen een SELECT valt over een iframe heen als hij er vlak boven staat.

Het verbergen van het iframe lijkt mij de enige oplossing. En misschien kun je wat smokkelen met de ruimte tussen de sleep-gevoelige titel-balk en het iframe, zodat je bij het slepen niet zo snel over het iframe heen zit.

  • orf
  • Registratie: Augustus 2005
  • Laatst online: 01:05

orf

Nee, dan kan niet, je kunt geen elementen over een iframe heen plaatsen. Alleen een SELECT valt over een iframe heen als hij er vlak boven staat.
code:
1
2
<iframe style="position:absolute;top:0;left:0;width:100px;height:100px;" src="http://www.google.nl"></iframe>
<div style="position:absolute;top:10px;left:10px;width:100px;height:100px;z-index:2;background:#f00;"></div>

Verwijderd

Topicstarter
funkwurm schreef op zaterdag 27 mei 2006 @ 15:16:
Het verbergen van het iframe lijkt mij de enige oplossing. En misschien kun je wat smokkelen met de ruimte tussen de sleep-gevoelige titel-balk en het iframe, zodat je bij het slepen niet zo snel over het iframe heen zit.
Check maar eens dat heb ik al gedaan :D
5 pixels aan iedere kant
maar de echte problemen komen pas naar boven met meerdere schermen... als je dan naar buiten wil resizen en je zit boven de onderliggende iframe dan blokkeert die ook de events :(
Daarom zit ik ook met het probleem dat ik IEDER iframe zou moeten verbergen

  • Borizz
  • Registratie: Maart 2005
  • Laatst online: 02-01 15:55
Borizz schreef op zaterdag 27 mei 2006 @ 13:47:
...

Je zou eens hier kunnen kijken, dat is iets wat ik een paar jaar geleden gemaakt hebt, misschien dat je wat aan het script erachter hebt.
Heb je al naar dat voorbeeld gekeken...? Ik heb net in 1 van mijn windows een iframe gezet (lokaal hier) en dat werkte prima.. Misschien toch eens naar kijken.. Het is helemaal niet nodig om rare truckjes uit te halen zoals het iframe hiden..

edit: in IE heeft ie er toch nog wat problemen mee als je snel met de muis beweegt, Firefox lijkt het goed te doen..

[ Voor 10% gewijzigd door Borizz op 27-05-2006 15:46 ]

If I can't fix it, it ain't broken.


Verwijderd

Topicstarter
Borizz schreef op zaterdag 27 mei 2006 @ 15:39:
[...]


Heb je al naar dat voorbeeld gekeken...? Ik heb net in 1 van mijn windows een iframe gezet (lokaal hier) en dat werkte prima.. Misschien toch eens naar kijken.. Het is helemaal niet nodig om rare truckjes uit te halen zoals het iframe hiden..
Ik heb dat bekeken...
ik zal ook ff de code van een scherm van mij hier posten ... is misschien makkelijk
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<table class="super_window" cellpadding="0"><tr>
<td><table class="window"><tr><td class="top_left">
<td class="icon_item">[img]"iepage.gif"></td>
</td><td[/img]Diecyde.com</td>
<td class="icon_cel">[img]"window_minus.png"></td>
<td[/img][img]"window_max.png"></td>
<td[/img][img]"window_close.png"></td>
<td[/img]</td></tr></table></td></tr><tr><td>
<table class="window" width="138%"><tr><td class="midden_links"></td><td class="midden_blank"></td>
<td class="midden_cel">

<iframe width="100%" Height="100%" frameborder="0" src="http://www.diecyde.com/~diecyde"></iframe>

</td>
<td class="midden_blank"></td><td class="midden_rechts"></td></tr></table></td></tr><tr><td><table class="window"><tr>
<td class="midden_links"></td><td class="onder_blank"></td><td class="midden_rechts"></td></tr></table></td></tr><tr><td>
<table class="window"><tr><td class="bottom_left"></td><td class="midden_bottom"></td><td class="bottom_right"></td>
</tr></table></td></tr></table>


En die iframes stoppen bij mij toch echt alle events

Edit: ook even de laad code erbij proppen:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function build_new_window(newwindow,windowid,infostore){
    var dumpstring="code uit vorige scherm..";
    if(!newwindow){
        var docuvar = document.createElement('div');
        docuvar.name=windowid;
        docuvar.id=windowid;
        docuvar.className="window_layer";
        docuvar.innerHTML=dumpstring;

        document.body.appendChild(docuvar);

    }else{
        var docuvar = document.getElementById(windowid);
        docuvar.innerHTML=dumpstring;
    }
}

[ Voor 39% gewijzigd door Verwijderd op 27-05-2006 15:56 ]

Pagina: 1