Avatar billede kongfjong Nybegynder
29. december 2006 - 17:59 Der er 11 kommentarer og
1 løsning

IE viser billeder, men FF ikke

Jeg er ved at brygge en lille kalender sammen, og i den forbindelse, vil jeg have noget gfx, til at man kan "spole" frem og tilbage i år og måned.

Mit problem er så, at IE viser billederne fint, men ikke FF. Eksempel:

http://martin8.wi8.ots.dk/calendar/dato_test.php (tryk på test hehe).

JavaScript koden er som følger:
====================================================
function openCalWindow(selectYearRange)
{
    calWindow = window.open('', '', 'width=630, height=400, status=0');
   
    var rootDoc = calWindow.document.documentElement;
    var headElm = rootDoc.getElementsByTagName(rootDoc.childNodes[0].tagName)[0];
    var bodyElm = rootDoc.getElementsByTagName(rootDoc.childNodes[1].tagName)[0];
   
    if (bodyElm.firstChild)    {
        bodyElm.removeChild(bodyElm.firstChild); }
       
    var scrElm = calWindow.document.createElement('script');
    scrElm.setAttribute('type', 'text/javascript');
    scrElm.setAttribute('src', 'scripts/kalender.js');
    headElm.appendChild(scrElm);
   
    var calContain = calWindow.document.createElement('div');
    calContain.setAttribute('id', 'calendar');
    bodyElm.appendChild(calContain);

    buildCalendarTop(calWindow, selectYearRange);
    buildCalendarMatrix(calWindow, 1);
    calWindow.focus();
}

function buildCalendarTop(calWindow, selectYearRange)
{
    var mainElm = calWindow.document.getElementById('calendar');
   
    var selectYearStart = selectYearRange.split('-')[0];
    var selectYearEnd = selectYearRange.split('-')[1];
   
    var monthBack = calWindow.document.createElement('img');
    monthBack.setAttribute('src', 'scripts/gfx/monthBackUp.gif');
    monthBack.setAttribute('onmousedown', 'this.src = "scripts/gfx/monthBackDown.gif"');
    monthBack.setAttribute('onmouseup', 'this.src = "scripts/gfx/monthBackUp.gif"');
    monthBack.setAttribute('onclick', ''); // HUSK HUSK HUSK

    var yearBack = calWindow.document.createElement('img');
    yearBack.setAttribute('src', 'scripts/gfx/yearBackUp.gif');
    yearBack.setAttribute('onmousedown', 'this.src = "scripts/gfx/yearBackDown.gif"');
    yearBack.setAttribute('onmouseup', 'this.src = "scripts/gfx/yearBackUp.gif"');
    yearBack.setAttribute('onclick', ''); // HUSK HUSK HUSK
   
    var selectYear = calWindow.document.createElement('select');
    selectYear.setAttribute('id', 'selectYear');
    selectYear.setAttribute('onchange', ''); // HUSK HUSK HUSK

    var selectMonth = calWindow.document.createElement('select');
    selectMonth.setAttribute('id', 'selectMonth');
    selectMonth.setAttribute('onchange', ''); // HUSK HUSK HUSK
   
    for(i=selectYearStart; i<=selectYearEnd; i++)
    {
        var opt = calWindow.document.createElement('option');
        opt.text = i;
        opt.value = i;
       
        try {
            selectYear.add(opt, null)
        } catch (e) {
            selectYear.add(opt)
        }
    }

    for(i=0; i<=11; i++)
    {
        var opt = calWindow.document.createElement('option');
        opt.text = setMonthName(i);
        opt.value = i;

        try {
            selectMonth.add(opt, null)
        } catch (e) {
            selectMonth.add(opt)
        }
    }

    var yearForward = calWindow.document.createElement('img');
    yearForward.setAttribute('src', 'scripts/gfx/yearForwardUp.gif');
    //yearForward.setAttribute('alt', '1 år frem');
    yearForward.setAttribute('onmousedown', 'this.src = "scripts/gfx/yearForwardDown.gif"');
    yearForward.setAttribute('onmouseup', 'this.src = "scripts/gfx/yearForwardUp.gif"');
    yearForward.setAttribute('onclick', ''); // HUSK HUSK HUSK

    var monthForward = calWindow.document.createElement('img');
    monthForward.setAttribute('src', 'scripts/gfx/monthForwardUp.gif');
    monthForward.setAttribute('onmousedown', 'this.src = "scripts/gfx/monthForwardDown.gif"');
    monthForward.setAttribute('onmouseup', 'this.src = "scripts/gfx/monthForwardUp.gif"');
    monthForward.setAttribute('onclick', ''); // HUSK HUSK HUSK

    mainElm.appendChild(monthBack);
    mainElm.appendChild(yearBack);
    mainElm.appendChild(selectYear);
    mainElm.appendChild(selectMonth);
    mainElm.appendChild(yearForward);
    mainElm.appendChild(monthForward);
}
====================================================

openCalWindow() er så den funktion der eksekveres, når man trykker på Test på siden.

Jeg kan simpelthen ikke se, hvad problemet skulle være:)
Avatar billede windcape Praktikant
29. december 2006 - 18:05 #1
Jeg vil anbefale at du skifter

var monthBack = calWindow.document.createElement('img');
  monthBack.setAttribute('src', 'scripts/gfx/monthBackUp.gif');
  monthBack.setAttribute('onmousedown', 'this.src = "scripts/gfx/monthBackDown.gif"');
  monthBack.setAttribute('onmouseup', 'this.src = "scripts/gfx/monthBackUp.gif"');
  monthBack.setAttribute('onclick', ''); // HUSK HUSK HUSK

ud med følgende kode:

var monthBack = new Image();
    monthBack.src = 'scripts/gfx/monthBackUp.gif';
    monthBack.mouseDown = function() { this.src = "scripts/gfx/monthBackDown.gif"; }
    monthBack.mouseUp = function() { this.src = "scripts/gfx/monthBackUp.gif"; }
    monthBack.click  = function() { }

prøv at se om det hjælper :-)
Avatar billede windcape Praktikant
29. december 2006 - 18:05 #2
og lige en lille rettelse:

var monthBack = new Image();
    monthBack.src = 'scripts/gfx/monthBackUp.gif';
    monthBack.mouseDown = function() { this.src = "scripts/gfx/monthBackDown.gif"; }
    monthBack.mouseUp = function() { this.src = "scripts/gfx/monthBackUp.gif"; }
    monthBack.click  = function() { }

calWindow.document.appendChild(monthBack); // husk denne her
Avatar billede mclemens Nybegynder
29. december 2006 - 19:53 #3
Hvis du istedet for f.eks.:
scripts/gfx/monthBackDown.gif
skriver hele stien til billederne som f.eks.:
http://martin8.wi8.ots.dk/calendar/scripts/gfx/yearBackDown.gif
... hjælper det så på visningen i Firefox ?
Avatar billede windcape Praktikant
29. december 2006 - 19:59 #4
mclemens hvis du bruger Firefox WebdeveloperToolbar kan du bruge "View Generated Source" og se at den faktisk outputter html koden korrekt nok.

Men ved ikke at bruge Image() objektet vil Firefox ikke rendere billederne :-)
Avatar billede mclemens Nybegynder
29. december 2006 - 20:21 #5
Ved at markere lidt af teksten og vælge "Vis markeringens kildekode" kan jeg godt se at kildekoden er ok, men websitet er placeret på: about:blank iflg. de oplysninger jeg kan se i min FF... Det kan godt tænkes at jeg bør installere den WebdeveloperToolbar :)

... Har lige testet, du har ret det virker ikke lokalt heller :)
Avatar billede mclemens Nybegynder
29. december 2006 - 20:32 #6
^ - Og din rettelse virkede :)
Avatar billede kongfjong Nybegynder
30. december 2006 - 21:28 #7
Det virker fint nu i FF men så virker det til ikke ikke IE:)
Avatar billede windcape Praktikant
31. december 2006 - 01:19 #8
Metoden burde også virke i IE, så du bliver nød til at forklare dig nærmere eller poste et link til en version hvor du har brugt den nye kode.
Avatar billede kongfjong Nybegynder
31. december 2006 - 13:45 #9
Jeg har faktisk fundet en metode, der fungerer i begge to. Jeg finder simpelthen, vha. lidt streng-manipulation, stien frem til den side man er på, og hvor kalenderen bliver kaldet fra. Så sammensætter jeg en streng med stien og 'scripts/gfx/monthBackUp.gif', som jeg så bruger i src-attributten:)
Avatar billede olebole Juniormester
02. januar 2007 - 14:20 #10
<ole>

Undskyld, men dette er da noget vrøvl:

var monthBack = new Image();
  monthBack.src = 'scripts/gfx/monthBackUp.gif';
  calWindow.document.appendChild(monthBack);

Det kan kun skyldes FF's katastrofalt elendige DOM-lag, hvis den kode virker. _Intet_ kan (må kunne) append'es til document-objektet. Elementer kan/må kun append'es til et HTML-element  =)

/mvh
</bole>
Avatar billede windcape Praktikant
25. januar 2007 - 11:18 #11
hovsa, en typo fra min side ;-) godt spottet ole

calWindow.document.body.appendChild(monthBack);
Avatar billede kongfjong Nybegynder
07. august 2007 - 09:27 #12
Lukket:)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester