Avatar billede Slettet bruger
25. juni 2005 - 18:38 Der er 9 kommentarer og
1 løsning

validere allowtransparency

Kan man ikke på en eller anden måde opnå en valid <iframe allowtransparency="true"> med
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
...eller kan det bare overhovedet ikke lade sig gøre ??
Avatar billede Slettet bruger
25. juni 2005 - 18:44 #1
Nej, hvis du bruger ikke-standard elementer og/eller attrbutter, så kan du ikke have valid kode. Så simpelt er det.
Avatar billede Slettet bruger
25. juni 2005 - 18:54 #2
Okay. Skulle lige være helt sikker.
...Og man kan ikke lave et lille valid script som fortæller iframe'en at den er transperant ??

Anyway, nogen som ved noget om #1 hvorfor transparency ikke er "godkendt", og #2 om det måske vil blive det senere...
Avatar billede Slettet bruger
25. juni 2005 - 20:33 #3
Jeg kender ikke til en script-metode, der kan sætte den attribut, men jeg beskæftiger mig heller ikke meget med Microsoft-produkter, og er derfor ikke synderlig interesseret i at sætte mig ind i ting, der udelukkende virker på disse.

Du kan muligvis lave noget med "conditional comments", men jeg ved ikke med sikkerhed om nummer to af dem vil være gyldig.

<!--[if IE]>
Her er koden til IE
<![endif]-->
<![if !IE]>
Her er den samme kode i en gyldig udgave
<![endif]>

En validator og alle andre browsere end IE vil ganske simpelt ignorere koden, der kun er til IE. Og IE vil ligeledes ignorere koden til de andre.
Avatar billede Slettet bruger
25. juni 2005 - 22:37 #4
Okay. Tak skal du ha', sandbox! Jeg gemmer ideen til en anden god gang, da jeg ikke kan bruge den til mit nuværende. Men som sagt; skulle også bare lige høre ad...
Avatar billede busschou Praktikant
26. juni 2005 - 01:25 #5
Jeg har selv ligget og luret på samme problem og vil til det blot sige at problemet med transperant iframes ikke _kun_ er behæftet på IE
Opera kender ikke AllowTransparency og kan/vil ikke sætte bagrunden transperant
Jeg har ikke selv kunne finde en løsning, dog fundet en forklaring som hedder at en iframe er et "vindue til en anden side" hvorfor den viser sidens baggrund, da der ikke er nogen anden baggrund. Lyder måske fair nok, ville bare være rart hvis det kunne omgåes :o)

Og så et ps, I min kode er det eneste som validatoren brokker sig over også kun AllowTransparency. Men alt andet er validt, og det kører fint i IE, FF, NN og Opera - med undtagelse af at opera ikke gør noget ved transperanten, men det gør den alligevel ikke, så det bliver vist som det altid ville blive vist ....desværre
Avatar billede olebole Juniormester
28. juni 2005 - 12:27 #6
<ole>

Du kan altid sætte en attribut på et element med JavaScript ... det er helt legalt, hvadenten den pågældende attribut er valid HTML eller ej:

window.onload = function(){
  document.getElementById("myIframe").setAttribute("allowTransparency", true);
}

- men det virker stadig kun i IE  :)

/mvh
</bole>
Avatar billede Slettet bruger
28. juni 2005 - 21:40 #7
Ole:

Ja, det virker jo fint nok - bortset fra at den er lidt længere om at læse attribut'en på den måde. (Iframen er hvid indtil hele siden er læst)

Men hvordan vil du skrive funktionen hvis der er flere Iframes - sådan her ...eller hvordan?:

window.onload = function(){
  document.getElementById("myIframe1").setAttribute("allowTransparency", true);
  document.getElementById("myIframe2").setAttribute("allowTransparency", true);
  document.getElementById("myIframe3").setAttribute("allowTransparency", true);
  document.getElementById("myIframe4").setAttribute("allowTransparency", true);
}

...Man må jo kun have ét unikt Id ik'?!

Også vil jeg lige tilføje - som busschou også skriver - at "allowTransparency" altså virker i næste alle browsere, men undtaget Opera! Så det er _ikke_ kun IE!

Du skriver at det er helt legalt. Det er vel så et spørgsmål om definition - er det ik'?? Man "snyder" sig jo til en valid kode...
Avatar billede busschou Praktikant
28. juni 2005 - 21:48 #8
legalt eller ej :o)
Du kan jo benytte name attributen i stedet for id, ala
----
window.onload = function(){
  elms = document.getElementsByName("transparentIFrame")
  for (i=0;i<elms.length;i++){
    elms[i].setAttribute("allowTransparency",true);
  }
}
----
ps:
Ole >> du har ikke et fiks til en løsning i Opera tilfældigvis vel ? ;o)
Avatar billede roenving Novice
29. juni 2005 - 00:12 #9
>>baseiq

Legaliteten er helt åbenbar, for det handler om hvad man må i DOM-modellen for javascript-binding til html, ikke hvad man må for at lave attributter i (X)HTML ...

-- jeg stødte dog den anden dag ind i et problem, da jeg benyttede mig af en lignende metode, nemlig at det specielle tilfælde, som var spørgsmålet her ikke tillod oprettelse af en attribut med en direkte adressering (vi prøvede så ikke med setAttribute-tingen, men min egen test-ting virkede ganske udmærket lokalt overfor både IE og Mozilla !-)
Avatar billede olebole Juniormester
24. august 2005 - 19:42 #10
Nej, jeg har ingen løsninger til Opera. Metoden er - som roenving også slår fast - helt legal. Du kunne jo evt. gøre sådan:

window.onload = function(){
  for (i=1; i<5; i++) {
      document.getElementById("myIframe"+i).setAttribute("allowTransparency", true);
  }
}

- men du kunne også anvende nogle færre iframes  :)
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