Avatar billede monkeysee Nybegynder
15. oktober 2003 - 15:31 Der er 15 kommentarer og
1 løsning

Globale variabler & CSS behaviours

OBS!! Mit sprgsm. er Internet Explorer 5.5+ *Only*

Kan man oprette en "global" variabel via javascript, som man derefter kan tilgå i sit stylesheet (via behaviours) eller dhtml komponent (htc) ??

Umiddelbart synes jeg at have læst, at netop behaviours på stylesheets er kendetegnet ved at være lukkede for omverdenen - men kan man alligevel "snige" en udefrakommende tekst-streng ind i sin behaviour ?

Jeg spørger, fordi jeg gerne vil have at mit stylesheet kan referere til en (skiftende) basis-url, uden at skulle til at skrive hver linie via ASP eller lignende...
Avatar billede krukken Mester
15. oktober 2003 - 15:41 #1
KAn du ikke komme med et eksempel på hvad du skal bruge det til? Det er lidt lettere at sætte sig ind i problemet så
Avatar billede olebole Juniormester
15. oktober 2003 - 16:10 #2
<ole>

krukken >> Det står klart og tydeligt forklaret i spørgsmålet - men det kræver, man ved, hvad en behavoior og/eller en HTC er for noget  :)

Dokumentet, der inkluderer HTC'en, kan der fra HTC'en refereres til med 'element.document'. Dvs, du kan klistre en variabel på 'document' i hoved-dokumentet:

document.bla = "noget";

Nu kan den hentes fra HTC'en med:

alert(element.document.bla);

/mvh
</bole>
Avatar billede monkeysee Nybegynder
15. oktober 2003 - 16:24 #3
Ole, tak for at forsvare mit sprgsm "klart og tydeligt" :D

Jeg kan helt sikkert bruge dit råd (og gi' points for det!), men gælder det også for stylesheet expressions:

F.eks (forudsat at hoveddokumentet stadig har en variabel ved navn "bla")

myStyle{
background-image: url(expression(element.document.bla));
}

?? Det ville være fantastisk hvis det kunne virke på samme måde!!
Avatar billede olebole Juniormester
15. oktober 2003 - 16:45 #4
Hmmmm .... så skal 'bla' jo være en funktion (?) ... nu kommer vi ud i noget, jeg aldrig har prøvet, men mon ikke vi kan tage den på 'fornemmeren'?  :)

function myExpression() {
  // Dette må du zq selv klare
}
document.bla = myExpression;

Prøv det  :)
/mvh
Avatar billede olebole Juniormester
15. oktober 2003 - 16:47 #5
Nåååå ... undskyld - jeg troede, du mente, din expression skulle ligge i hoved-dokumentet.
Glem, hvad jeg skrev i sidste indlæg og prøv det du selv skrev. Det vil jeg mene fungerer.

Men test, før du giver points  ;o)
/mvh
Avatar billede monkeysee Nybegynder
15. oktober 2003 - 17:15 #6
Jeg har lige været i gang med at afprøve, og det virker! Sådan da!

Jeg kan få selve mit htc script til at acceptere en udefrakommende variabel ved at deklarere den i hoveddokumentet som document.bla

Men jeg har problemer når jeg forsøger noget lignende i mit stylesheet, hvor jeg har brug for at hente værdien når jeg henviser til htc scriptet:

.coolbutton  { behavior: url(expression (element.document.bla + 'coolbutton.htc');  }

så lige nu prøver jeg at få begge dele til at funke...
Avatar billede olebole Juniormester
15. oktober 2003 - 17:35 #7
Nu bliver jeg alligevel lidt i tvivl om præcist, hvad du gerne vil. Skal denne linie:
  .coolbutton  { behavior: url(expression (element.document.bla + 'coolbutton.htc');  }
ligge i hoved-dokumentet?
Avatar billede olebole Juniormester
15. oktober 2003 - 17:36 #8
... og hvis - kan 'bla' så ændres efter dokumentet er loaded?
Avatar billede monkeysee Nybegynder
15. oktober 2003 - 17:54 #9
det er sådan set lidt afhængigt af hvad for en metode der virker bedst. Derfor ekperimenterer jeg lidt-

det jeg prøvede var fra et (eksternt) stylesheet men jeg fik det som sagt ikke til at virke umiddelbart

jeg er dog ikke interesseret i at udskifte variablen løbende, men det kunne være interessant om man kunne gøre det! Som jeg har lavet det nu (mit eget CMS projekt) kræver udskiftningen af noget sådant en genstart af applikationen...
Avatar billede monkeysee Nybegynder
15. oktober 2003 - 18:00 #10
og det er altså en adresse (fuldstændig URL) som variablen skal indeholde -
Det glemte jeg vist at tilføje!

Jeg prøver at gøre det nemt at flytte det fra én server til en anden...
Avatar billede monkeysee Nybegynder
15. oktober 2003 - 18:11 #12
puh ha! med fare for at miste fokus synes jeg du fortjener dit svar/point! Det eneste jeg sådan set mangler nu, er en metode til at henvise til (den skiftende) adresse på min htc-fil via et stylesheet. Men det er relativt let at udskrive selve stylesheet'et via ASP el.lign, det var mere de fyldige HTC scripts jeg var bekymret for.

Jeg takker (af) !!!
Avatar billede olebole Juniormester
15. oktober 2003 - 19:56 #13
Jamen, jeg vil zq ikke give op endnu  :)
Altså ... du har en behaviour, importeret i et dokument. I den behaviour ligger et element med et baggrundsbillede, der skal skiftes. Er det element behaviour'ens body, eller er det et div, eller ...?
Hav lige lidt tålmodighed, så løser vi den zq da elegant  :)
Avatar billede olebole Juniormester
15. oktober 2003 - 20:21 #14
Mon ikke du kan skrive noget à la dette i din HTC:

<PUBLIC:METHOD NAME="swapSheet" />
<style type="text/css">
.myStyle {
    background-image: url(my_pic.gif);
}
</style>
<script type="text/JavaScript">
function swapSheet( pic ) {
    document.styleSheets[0].removeRule(0);
    document.styleSheets[0].addRule( ".myStyle", "url(" + pic + ")" );
    document.body.innerHTML = document.body.innerHTML + "";
}
</script>

<body class="myStyle">
  ... osv ...

Så kan du kalde metoden udefra:
  ELEMENT.swapSheet("nyt_pic.gif");

/mvh
Avatar billede olebole Juniormester
15. oktober 2003 - 20:22 #15
Se, om det er noget, du kan bruge ... og tak for points  :)
Avatar billede monkeysee Nybegynder
17. oktober 2003 - 12:26 #16
Hej har ikke glemt dig! Fedt at du gider give det en ekstra skalle. Jeg vender tilbage senere og deler mine erfaringer...
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