Slideshow JS met ajax

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • ToFast
  • Registratie: Mei 2004
  • Laatst online: 25-01 12:49
Ik wil een Javascript slideshow laten weergeven in een bepaalde html-file. Deze html-file wordt door middel van ajaxcode in de indexfile, dynamisch geopend in een mainframe gedeelte van de pagina(CSS 'Frames').

De slideshow werkt wel als je de html-pagina los opent.
De slideshow werkt overal waar je deze gebruikt in de index, in elk CSS-Frame etc

Echter als je de links (html-files) opent via de index, dan werkt de slideshow niet!

HTML: 300.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//NL"
      "http://www.w3.org/TR/REC-html40/strict.dtd">
<HTML>
<HEAD>
  <title>Interface AC Ryon PlayOn! HD</title>
    <META name="keywords" lang="NL" content="Interface AC Ryon PlayOn! HD">      
    <META name="copyright" content="Eltjan">
  <script type="text/javascript" src="script/image.js"></script> 
</HEAD>
<BODY onload="runSlideShow();">
<IMG SRC="pictures/PreviewWindow.png"/>

<DIV STYLE="position:absolute; top:12%; left: 1.5%">
  <img src="pictures/Gallery_1.jpeg" name="SlideShow"/>
</div>

</BODY>
</HTML>


Nog geprobeerd de js file aan te passen met:
JavaScript: image.js
1
Window.onload = runSlideShow; 

en:
JavaScript:
1
2
3
4
5
6
7
oldLoad = window.onload;
window.onload = function(){
 runSlideShow();
 if(oldLoad){
  oldLoad();
  }
}

Beide aanpassingen werken ook niet.

[ Voor 41% gewijzigd door ToFast op 13-05-2010 21:37 ]


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Klopt het pad naar je JS? Waarom staat er een image tag voor je body? En Window.onload bestaat sowieso niet. Verder: Debuggen: Hoe doe ik dat?. En als je code post, gebruik dan code tags a.u.b.

[ Voor 31% gewijzigd door RobIII op 13-05-2010 20:23 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • ToFast
  • Registratie: Mei 2004
  • Laatst online: 25-01 12:49
RobIII schreef op donderdag 13 mei 2010 @ 20:22:
Klopt het pad naar je JS? Waarom staat er een image tag voor je body? En Window.onload bestaat sowieso niet. Verder: Debuggen: Hoe doe ik dat?. En als je code post, gebruik dan code tags a.u.b.
Considered done..

- Er stond geen image tag voor de body, die body tag hoort voor 'onload'.Nu de gehele code gepost.
- Index.htm en de html file staan in de root directory. Hij laat in het mainframe wel het eerste plaatje zien, dus het pad is goed.

[ Voor 22% gewijzigd door ToFast op 13-05-2010 20:46 ]


Acties:
  • 0 Henk 'm!

  • Jermaine
  • Registratie: Januari 2003
  • Laatst online: 26-06 11:12
Zet het zaakje eens online, dat maakt 't al een stuk makkelijker.

Acties:
  • 0 Henk 'm!

  • ToFast
  • Registratie: Mei 2004
  • Laatst online: 25-01 12:49
Jermaine schreef op donderdag 13 mei 2010 @ 20:46:
Zet het zaakje eens online, dat maakt 't al een stuk makkelijker.
http://congres-go-computer.awardspace.info/
http://congres-go-computer.awardspace.info/300.html

Het gaat erom dat als je op de link 300 klikt, deze rechts wordt geladen. Normale afbeeldingen, tekst etc wordt wel geladen, alleen de slideshow functie niet.

Bij de directe html link zie je dat het werkt.

[ Voor 27% gewijzigd door ToFast op 13-05-2010 21:07 ]


Acties:
  • 0 Henk 'm!

Anoniem: 147126

Je gebruikt 2x de body-tag, en hebt 2 div's niet afgesloten. Hier (in Firefox) werkt de slideshow volgens mij trouwens wel, maar misschien dat andere browsers er niets van kunnen maken door de incorrecte HTML.

Acties:
  • 0 Henk 'm!

  • ToFast
  • Registratie: Mei 2004
  • Laatst online: 25-01 12:49
Anoniem: 147126 schreef op donderdag 13 mei 2010 @ 21:09:
Je gebruikt 2x de body-tag, en hebt 2 div's niet afgesloten. Hier (in Firefox) werkt de slideshow volgens mij trouwens wel, maar misschien dat andere browsers er niets van kunnen maken door de incorrecte HTML.
Ik had het niet in de gaten dat die functie onload direct bij de bovenste body-tag gezet kon worden - uploaded
DIVS - uploaded

Maar de slideshow werkt hier wel als je direct naar 300.html gaat (ook online) via Firefox 3.6.3 en IE8 maar niet via de homepagina als je op 300 klikt en hij rechts in het CSS-frame wordt geladen.

Acties:
  • 0 Henk 'm!

Anoniem: 147126

Hint: Als je met AJAX de pagina 'laad' in die div, dan komt de content van die pagina dus ook echt in die Div te staan. Die pagina die je er dus in zet moet dus geen <html>, <head>, <body> etc bevatten. De body onload werkt daarom ook niet. Het is geen iframe :P

Acties:
  • 0 Henk 'm!

  • ToFast
  • Registratie: Mei 2004
  • Laatst online: 25-01 12:49
Anoniem: 147126 schreef op donderdag 13 mei 2010 @ 21:42:
Hint: Als je met AJAX de pagina 'laad' in die div, dan komt de content van die pagina dus ook echt in die Div te staan. Die pagina die je er dus in zet moet dus geen <html>, <head>, <body> etc bevatten. De body onload werkt daarom ook niet. Het is geen iframe :P
Ah kijk, dat begrijp ik. Op welke manier kan je die body onload dan aanroepen en dat die in div 'laad'? Of de html wel laten staan en dan in de html file script taal met tags, waar je iets in de trend van aanroept?:
code: filename
1
2
3
4
5
6
7
oldLoad = window.onload;
window.onload = function(){
 runSlideShow();
 if(oldLoad){
  oldLoad();
  }
}

Acties:
  • 0 Henk 'm!

Anoniem: 147126

Wat je kunt doen is <script type="text/javascript" src="script/image.js"></script> in de header van de hoofdpagina plaatsen, en in 300.html alleen:
HTML:
1
2
3
4
5
<IMG SRC="pictures/PreviewWindow.png"/>
<DIV STYLE="position:absolute; top:12%; left: 1.5%">
  <img src="pictures/Gallery_1.jpeg" name="SlideShow"/>
</div>
<script type="text/javascript">runSlideShow();</script>

Dan wordt de functie runSlideShow eenmaal uitgevoerd zodra het geplaatst wordt, denk ik.

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
ToFast schreef op donderdag 13 mei 2010 @ 21:47:

[code=language,line,tabwidth,filename]
IMHO een mooie demonstratie van je hele probleem :X Als je nou eens gaat proberen te begrijpen waar je mee bezig bent in plaats van alles zomaar blind te copy/pasten.
Anoniem: 147126 schreef op donderdag 13 mei 2010 @ 21:51:

Dan wordt de functie runSlideShow eenmaal uitgevoerd zodra het geplaatst wordt, denk ik.
Code die je middels AJAX binnen haalt wordt niet (zomaar) uitgevoerd. Maar dat is prima te vinden op Google.

[ Voor 38% gewijzigd door RobIII op 13-05-2010 21:55 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • kluyze
  • Registratie: Augustus 2004
  • Niet online
Waarom in een onload? Als je het met ajax doet dan zet je eerst die html code op de juiste plaats en dan roep je daarna de functie toch gewoon zelf aan.

Acties:
  • 0 Henk 'm!

  • ToFast
  • Registratie: Mei 2004
  • Laatst online: 25-01 12:49
Bedankt RobIII. Hiermee kan ik wel uit de voeten.

Kijk, ik hoef niet van alle code te weten wat het doet of dat mensen mij code gaan voorkauwen. Ik leer omgaan met allerlei talen die ik al redelijk succesvol weet te combineren. Ik gebruikte in een eerdere webpagina al 'ajax' code, CSS, PHP en een MySQL database (weergeven en inserten van data). Hetzij op een voor jullie simpel niveau, maar dat ik dat allemaal al werkend kreeg, is grotendeels te danken aan het zoeken naar alle informatie op het web en de vele uren werk.

Soms loop je echt hard vast op onderdelen, waarbij wat hulp van anderen een uitkomst is. Natuurlijk had ik al gekeken naar het pad en eventueel hoofdletter gebruik. Ik was er waarschijnlijk nooit achtergekomen dat de meeste HTML content wel weergegeven wordt, maar javascript code (en wellicht andere code) niet.

Wat je noemt is geen demonstratie van mijn probleem, dat was snel-snel even iets posten waarvoor mijn excuses.

[ Voor 6% gewijzigd door ToFast op 13-05-2010 22:14 ]


Acties:
  • 0 Henk 'm!

  • ToFast
  • Registratie: Mei 2004
  • Laatst online: 25-01 12:49
Waar ik nu mee zit is dat Ajax via httpRequests de externe html file van de server ophaalt, maar dat de Javascript file de files lokaal ophaalt, waarvan de namen in een array zitten(slideshow).

Dit is een paar stappen verder op de goede weg, maar het werkt helaas dus niet voor de slideshow.

HTML:
1
<a href="javascript:ajaxpage('300.html', 'maincontent'); loadobjs('script/image.js')"> 300</a>

Acties:
  • 0 Henk 'm!

  • ToFast
  • Registratie: Mei 2004
  • Laatst online: 25-01 12:49
Update:

Aardig wat gestoeid en ajax demo's bekeken en getest. Het wilde maar niet lukken.

Toch heb ik een aardige workaround gevonden, die misschien niet zo netjes is, maar wel de moeite waard om hier te posten in het geval meer mensen hier tegen aanlopen. Het bespaart veel tijd.

Een onzichtbare iframe (regel 1):
HTML:
1
2
3
4
5
<iframe onload="runSlideShow()" src="javascript:false;" style="border: 0; width: 1px; height: 1px; position: absolute; top: -100px; left: -100px;"></iframe>
<IMG SRC="pictures/PreviewWindow.png"/>
<DIV STYLE="position:absolute; top:12%; left: 1.5%">
  <img src="pictures/Gallery_1.jpeg" name="SlideShow"/>
</div>



De html pagina wordt nog steeds geladen in het CSS-frame 'maincontent' van de hoofdpagina:
HTML:
1
<a href="javascript:ajaxpage('300.html', 'maincontent');"> 300</a>


Waarom een JS object toevoegen niet werkt, weet ik echter nog steeds niet. In de demo van dynamicdrive.com werkt het wel, maar dat is ook geen slideshow.

[ Voor 17% gewijzigd door ToFast op 14-05-2010 00:56 ]


Acties:
  • 0 Henk 'm!

  • bindsa
  • Registratie: Juli 2009
  • Niet online
Heb net even gekeken naar je online demo, een paar dingen die me opvielen:

- Misschien is het een idee om de scripts uit je HTML te halen en die in losse .js bestanden te stoppen
- Zorg dat je eerst alle HTML errors fixt voordat je JS gaat debuggen, IE bijvoorbeeld wil nog wel eens weigeren scripts uit te voeren als hij de HTML daarvoor niet goed begrijpt.


HTML:
1
<p class=normaltext >


Dat vinden browsers niet zo leuk :) Dit hebben ze liever:

HTML:
1
<p class="normaltext" >


HTML:
1
2
3
<div id="framecontentTop">
  <IMG SRC="pictures/Titel_low.png" WIDTH="1280" HEIGHT="157" ALT="titel" ALIGN="LEFT" BORDER="0" VSPACE="0" HSPACE="0"/>
</div>

Misschien is het voor jezelf gemakkelijker om óf alles uppercase óf alles lowercase te houden, dan raak je minder snel in de war ;)

Bovendien is het vaak niet zo handig om plaatjes te gaan resizen met HTML, zorg dat de plaatjes die je aanlevert de juiste breedte en hoogte hebben (dit kan evt. met PHP).

HTML:
1
<class="navigeerpaneel">


Wat is dat?

HTML:
1
<FONT SIZE="+2">


Gebruik van de FONT tag is niet zo handig, CSS is makkelijker, zo hou je de opmaak gescheiden van de HTML en blijft het overzichtelijk. Bovendien is gebruik van de FONT tag niet toegestaan in het door jou gebruikte doctype (STRICT). Kijk eens naar bijv. validator.w3.org

HTML:
1
2
3
4
5
6
  <a href="javascript:ajaxpage('300.html', 'maincontent');"> 300</a> <br>
    <a href="javascript:ajaxpage('Robin hood.html', 'maincontent');"> Robin hood </a> <br>
    <a href="javascript:ajaxpage('V for vendetta.html', 'maincontent');"> V for Ventta </a> <br>
    <a href="javascript:ajaxpage('Clash of the Titans.html', 'maincontent');"> Clash of the Titans </a> <br>
    <a href="javascript:ajaxpage('Wall-e.html', 'maincontent');"> Wall-e </a> <br>
    <a href="javascript:ajaxpage('Just Wright.html', 'maincontent');"> Just Wright </a> <br>


Volgens mij doe je hier dingen dubbel. Bijv. de Clash of the Titans.html informatie heb je eigenlijk al. En aangezien de 2de parameter van ajaxpage() in jouw source altijd maincontent is kan je die misschien beter default maken.

Misschien is dit een idee:
- Hang een event handler aan A-tags
- Zodra er op een link wordt geklikt pak je de innerHTML van die link (filmtitel)
- Daar plak je .html aan vast
- Die pagina laadt je met ajax

Zo blijft je source overzichtelijk en doe je geen dingen dubbel. Een kladje in code (jQuery om dat iets beter in m'n hoofd zit dan JS atm, maar het is ook zeker mogelijk met gewone JS)

JavaScript:
1
2
3
4
5
$('a').click(function() {
   var title = $(this).innerHTML();
   title = title + '.html';
   //Laad je pagina hier met AJAX
});


Kan zijn dat er ergens een syntax errortje zit, zoals gezegd, het is een kladje, maar de strategie moet zo helder zijn ;)

Ik hoop dat je er wat mee kan.

[ Voor 3% gewijzigd door bindsa op 16-05-2010 15:57 ]


Acties:
  • 0 Henk 'm!

  • Gomez12
  • Registratie: Maart 2001
  • Laatst online: 17-10-2023
L0calh0st schreef op zondag 16 mei 2010 @ 15:55:
Een kladje in code (jQuery om dat iets beter in m'n hoofd zit dan JS atm, maar het is ook zeker mogelijk met gewone JS)
Ik mag toch hopen dat JS alles kan doen wat je met jquery kan...

Acties:
  • 0 Henk 'm!

  • bindsa
  • Registratie: Juli 2009
  • Niet online
Gomez12 schreef op zaterdag 29 mei 2010 @ 18:16:
[...]

Ik mag toch hopen dat JS alles kan doen wat je met jquery kan...
Of course :P (L0calh0st vraagt zich af waar jQuery in geschreven is 8)7 )

Acties:
  • 0 Henk 'm!

  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

L0calh0st schreef op zaterdag 29 mei 2010 @ 18:19:
[...](L0calh0st vraagt zich af waar jQuery in geschreven is 8)7 )
Ik neem aan dat deze vraag volledig retorisch bedoelt is? :)

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


Acties:
  • 0 Henk 'm!

  • peterkuli
  • Registratie: September 2003
  • Laatst online: 27-06 09:34
BtM909 schreef op maandag 31 mei 2010 @ 14:35:
[...]

Ik neem aan dat deze vraag volledig retorisch bedoelt is? :)
Is die vraag ook niet retorisch? Eigenlijk deze dus ook :P

Acties:
  • 0 Henk 'm!

  • bindsa
  • Registratie: Juli 2009
  • Niet online
BtM909 schreef op maandag 31 mei 2010 @ 14:35:
[...]

Ik neem aan dat deze vraag volledig retorisch bedoelt is? :)
Zeker ;)
Pagina: 1