Avatar billede netnerd Nybegynder
30. juli 2005 - 21:24 Der er 7 kommentarer og
1 løsning

css ved Server.Execute

Hejsa...

Jeg har en asp side, som includer en anden asp side ved hjælp af Server.Execute.

Det er dog sådan at de 2 sider helst skal bruge hver deres style-fil. Men når jeg includer, får "side2" påtvunget stylen fra "side1". Nogen som kender en løsning på dette, fremfor at skulle lave en stor style-fil?

Mvh Jens
Avatar billede softspot Forsker
30. juli 2005 - 22:22 #1
Hvis jeg forstår dit koncept for style korrekt, så har jeg flg. betragtning...

Når du kalder en anden asp-side med server.execute bliver output fra den side2 du kalder med execute blot renderet ind i den side der kalder. Derfor hører de altså til i samme "adresserum" om man så kan sige. Hvis du havde en anden side3 med en anden "style" som kaldte den samme side2 ville side2's output få style fra side3 - og det kunne altså være en fuldstændig anden style.
Avatar billede netnerd Nybegynder
30. juli 2005 - 22:29 #2
Ja, men hvis man nu forestiller sig at "side2" bliver brugt på flere forskellige sider, og altid skal se ens ud. (altså der er forskellige sidder som includer den)(og de har hver deres egen style fil.) så vil man ikke kunne have en css fil, som angiver stylen for "side2", da den altid påvirkes af den side den bliver includet af?
Avatar billede softspot Forsker
30. juli 2005 - 22:34 #3
Ja, med mindre du laver styles som specifikt adresserer det indhold som side2 genererer. Alternativt overvejede jeg om kan kunne lave noget scripting som sørgede for at oprette et stylesheet som galdt for side2 på den side hvor den eksekveres...

Jeg ved ikke hvor hård du er til javascript, men det kunne da være en metode. Sig til hvis det er noget du kunne tænke dig at arbejde videre med, så kan vi da se på det :)
Avatar billede netnerd Nybegynder
30. juli 2005 - 22:40 #4
tja... det er ikke så vigtigt... bare et lille fritidsprojekt ;o) Ville bare lige høre om der måske var en smart måde... Så er i gang med at lave noget css som peger specifikt til "side2"..

tak for de hurtige svar.
Avatar billede netnerd Nybegynder
30. juli 2005 - 22:40 #5
smid et svar, så er der point :P
Avatar billede softspot Forsker
30. juli 2005 - 22:43 #6
Jeg var ellers igang med at lave et lille testprojekt :)

Jeg kan jo smide det her, hvis det bliver til noget ;)
Avatar billede netnerd Nybegynder
30. juli 2005 - 22:44 #7
hehe.... det må du de gerne hvis det er ;)
Avatar billede softspot Forsker
30. juli 2005 - 23:39 #8
Jeg har flikket noget sammen som ser ud til at fungere i både Firefox og IE. Jeg tror nu ikke det rammer 100% det du har behov for, men tror jeg snarere skyldes at det du helst vil have ikke rigtig er til at implementere med den platform du kører på ;)

Anyway! Konceptet er at den side du eksekverer (med server.execute) selv injicerer det stylesheet som passer til det HTML det er igang med at generere (dette sker via noget inline javascript), hvilket i det mindste betyder at du kan holde tingene adskilt og at den kaldende side ikke behøves at vide noget om hvilke stylesheets den eksekverende side har behov for - det klarer siden selv :)

Jeg har vist siden der eksekveres og den ser således ud:

<script type="text/javascript">
var objStylesheet = document.createElement("link");

// håndter IE/NS forskel på navngivning af owner-/owningElement
var objElement = document.styleSheets[0].owningElement ? document.styleSheets[0].owningElement : document.styleSheets[0].ownerNode;
   
if(objElement)
{
    if(objElement.parentNode)
    {
        var objStylesheetOwner = objElement.parentNode;
        if(objStylesheetOwner)
        {
            objStylesheet.setAttribute("href", "pinc.css");
            objStylesheet.setAttribute("rel", "stylesheet");
            objStylesheet.setAttribute("type", "text/css");
            objStylesheet.setAttribute("name", "pinc");
            objStylesheetOwner.appendChild(objStylesheet);
        }
    }
}
</script>
<%
' Her kører så den kode som skal sende HTML til den side hvori denne side eksekveres
%>


Hvis du er rigtig flittig lægger du selv nogle check op der søger igennem alle stylesheets for at se om der eksisterer et med det navn som du er ved at lægge på nu (så er der nemlig chance for at det du skal bruge allerede eksisterer og du derfor ikke behøver injicere det igen - alt efter hvor konsistent du er med navngivning ;))

Desuden kan du jo lægge selve scriptet til at injicere i en separat js-fil, så du kan nøjes med at referere til den i stedet for at smide scriptkoden inline på siden.

Nå, nu kan du jo se om det er noget der har interesse...
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
Kurser inden for grundlæggende programmering

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