I lang tid har samarbejdsbranchen fokuseret på at forbedre enhedsfunktioner – bedre kameraer, klarere lyd og smartere software. Men den virkelige forvandling handler ikke om funktioner.
Hvis de begge er erklæret client-side så kan du bare kalde fra VBScript til JavaScript og tilbage igen alt det du lyster, f.eks:
<html>
<head> <script language="javascript"> function Alerts() { alert("Hello world"); } </script> <script language="VBScript"> Sub Test Alerts() End Sub </script> </head>
Hvis "Sub Test" er erklæret server-side, så kan du ikke "kalde" din client-side funktion, men du kan self. rendere client-side kode der afvikler din funktion, f.eks:
Sub Test Response.Write("<script>Alerts();</script>"); End Sub
z42cool >> joda, man kan blande server-side og client-side ... man skal bare vide hvordan det fungerer.
I det eksempel jeg har skrevet, så vil <%= Session("minVar") %> blive tolket og rendered på serveren, og sat ind i client-side scriptet. Hvis vi antager at session variabelen returnerer "null", så vil scriptet se sådan ud:
If( "null" = "True" ) Then Alerts(); End If
Det eneste jeg kan se jeg har glemt, er at sætte "" rundt om <%= Session("minVar") %>. Scriptet skal se sådan ud:
If("<%= Session("minVar") %>" = "True" ) Then Alerts() end if
det virker også til dels,. meen jeg har bare et problem med at min javascript function køres hver gang siden loades + hver gang min session variable er = true
hvordan undgår jeg at den køres på andre tidspunkter end når min session variable er = true
Der skal vel sendes en eller anden værdi fra server site til client site som jeg så kan spørge på ,... eller hvad ?
<head> <script language="javascript"> function Alerts() { alert("Hello world"); } </script> <script language="VBScript"> function Test If("<%= Session("minVar") %>" = "True" ) Then Alerts() end if end function </script> </head>
<script language="javascript"> function Alerts(){ alert("hejsa"); } </script> <script language="VBScript"> function Test Alerts() end function </script> </HEAD>
>man må da kunne overføre et eller andet fra server siden >til klient siden, Læs nu hvad der bliver skrevet. Du kan IKKE sende en kommando til Klienten! Det er jo ikke noget chat-program det her. Det er to forskellige verdener du forsøger at interagere med. Det eneste du kan gøre, er dynamisk at generere dit javascript kode, som eksemplerne viser. Det kan godt være at der er et par tastefejl i de eksempler der er blevet præsenteret. Hvis de skal rettes, kunne du jo forsøge at være lidt mere udførlig end "Det virker ikke".
Nute>> DU KAN IKKE BLANDE SERVERSIDE OG CLIENTSIDE KODE!!!!!!!!!!!!! BASTA!!!!!!!!! SÅDAN ER DET BARE!!!!!!!!!!!!! Det du gør er anvende serverside kode til at rendere clientside kode, men det afvikles stadig i to forskellige kontekster der ikke kan kalde hinanden!
Hulla>> Hvorfor vil du have to funtioner på klientsiden????
<script language="javascript"> function Alerts(){ alert("hejsa"); } </script> <script runat="server"> Sub Page_Load(Object Sender, EventArgs E) If(Session("minVar")="True") Then Response.write("<script>Alerts();</script>"); End If </script>
<script> var minVar = <%= Session("minVar") %>; </script>
så blander jeg serverside og clientside kode. Så ... *JO*, det er fuldt muligt at blande dem. Hvis du gidder at slå din caps-lock fra, så ville det være meget bedre
hullu >> du forklarer jo som en person som ikke har styr på hvad han laver. Du spørger om flere ting på en gang, og det virker ikke som de har noget med hinanden at gøre. Prøv at forklar hvad du søger svar på. Du har fået et svar på dit første spørgsmål om du kan kalde en javascript funktion fra en vb funktion ... du har også fået et godt eksempel at kigge på.
"hvad plejer I at spørge på før i fyrer en alert box af" ... well ... det kommer jo helt an på hvad der skal ske. Hvis du har noget liggende i en Session variabel (som du har skrevet tidligere), så er mit siste eksempel tilstrækkelig.
Hvis du i page_load funktioner i din aspx.vb fil skriver:
Session("minVar") = "true"
hvis alertboxen skal vises, og
Session("minVar") = "false"
hvis alertboxen ikke skal vises, så skal din .aspx side se sådan ud:
<html>
<head> <script language="javascript"> function Alerts() { alert("Hello world"); } </script> <script language="VBScript"> function Test If("<%= Session("minVar") %>" = "true" ) Then Alerts() end if end function </script> </head>
<body onload="Test()"> </body>
</html>
Jeg kan ikke vise dig mer simpelt end dette. Men istedenfor at spørge om det ikke vil fungere, hvorfor tester du ikke selv ?? hvorfor tester du ikke de eksempler du får her inde ?? Og kanskje det vigtigste spørgsmål ... hvis du ikke forstår de forklaringer eller eksempler vi kommer med ... hvorfor spørger du ikke hvad det er vi prøver at fortælle dig ????
jeg har ikke lavet andet end at teste de eksempler hele dagen,.. men fordi JEG ikke kan få det til at virke er ikke ensbetydende med at DET ikke virker. Jeg prøver lige dit nu :)
Det er det samme som sidste gang,..jeg KAN IKKE få min Vb function til at kalde min javascript function,...med eller uden if sætning,..den ligner nøjagtig din
kan man ikke lave en test på om man får kaldt sin vb function,..altså noget med en msgbox,..eller noget response.write af en art ?
<script language="JavaScript"> function Alerts() { alert("hej"); } </script> <script language="VBScript"> function Test() Alerts() end function </script>
Det hele ender måske lidt i en strid om ord, men det ændrer nu ikke på, at det er forkert at påstå at det er muligt at BLANDE serverside kode og clientside kode. Hvis du tog dig til til at læse hele min forrige post før du svarede, ville du se at jeg sluttede af med at forklare, at det du gør er at rendere clientside kode vha. serverside kode. Det er på ingen måde muligt at give serveren kendskab til det domæne klienten afvikler javascript i, ligesom det er helt umuligt at give klienten kendskab til det domæne serveren afvikler asp.net i og deraf følger, at det naturligvis er umuligt at kalde det ene fra det andet. Jeg forstår så udemærket at det for mindre erfarne udviklere kan se ud som at at serverside koden og clientside koden er blandet sammen, men det er ikke det der sker. Når klienten forespørger på det givne aspx dokument, så afvikler serveren .Net programmet og er i øvrigt fuldstændig ligeglad med hvorvidt den udskriver javascript, html eller Grimms samlede eventyr. Resultatet af dette program sendes derefter til klienten som er fuldstændig ligeglad med hvorvidt der er tale om et statisk html dokument, et dokument genereret af asp.net eller noget helt tredie. Klienten modtager dokumentet, parser det og afvikler derfter eventuelle javascript blokke. Der er altså på ingen måde sket en sammenblanding af serverside og clientside kode.
z42cool >> Du har nok ret i at det hele måske ender i noget ordspasseri :-) Og jeg indrømmer gerne at jeg la op til det ...
Du har helt ret i det du skriver ... man kan ikke avvikle clientside script med en serverside kommando eller vice versa. Den eneste måte man kan gøre det på er som jeg har skidseret ... ved at "blande" serverside og clientside ved at udskrive serverside værdier i clientside scriptblok.
Jeg ville heller ikke bruge den korrekte definition i denne sammenhæng, da jeg sitter med indtrykket af at hullu allikevel ikke kunne bruge/forstå forklaringen (no offence, hullu ... men som du selv har skrevet: "og du har vist ret i at jeg ikke har styr på hvad jeg laver ". Jeg skriver ikke for at være nedlatende, men blot for at forklare at kundskabsniveauet på brugerne her inde er meget forskelligt ).
Noen gange er det nødvendig at forklare en problemstilling med spørgerens eget vokabular, ellers vil ikke svaret ha nogen værdi. Med denne begrundelse vælger jeg i enkelte tilfelde at forklare meget simpelt, nettop for at øge forståelsen til spørgeren. Resultatet av dette er at den der spørger får sit problem løst, han/hun lærer noget og vil forhåbentlig stille et mer korrekt/specifikt spørgsmål næste gang behovet melder sig.
Hvis vi ikke skal forfalde til at gøre det på ASP 3.0 måden er det nok mere korrekt at gøre noget i stil med:
<%@Page debug="true" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" > <html> <head>
<script runat="server"> Sub Page_Load(Sender As Object, E As EventArgs) If Session("MinVar") = "True" Then Page.RegisterClientScriptBlock("DocumentOnLoad", "<scrip" + "t>alerts();</scrip" + "t>") End If End Sub </script>
<script language="javascript"> function alerts() { alert("Hello world!"); } </script>
nute - jeg ved godt jeg ikke længere har en if sætning, men det burde vel virke når siden loades,.. jeg har lavet det med én onload property men stadig ingen alert box til hulla...
<script language="JavaScript"> function Alerts() { alert("hej"); } </script> <script language="VBScript"> function Test Alerts() end function </script>
<script language="JavaScript"> function Alerts() { alert("hej"); } </script> <script language="VBScript"> function Test Alerts() end function </script>
sådan ser den ud nu, nute.. men det virker kun hvis jeg onloader Alert() i stedet for Test(). På den måde går jeg uden om Test() som skal kalde Alerts(),..og det virker stadig ikke..:(
Kanon, nu virker mit kald imellem vb functionen og javascriptfunctionen.. Meeeeen det her virker ikke,... hvad gør jeg galt ? Session varablen er = "True"
<script language="VBScript"> function Test() If(<%= Session("minVar") %> = "true" ) Then Alerts() end if end function </script> </HEAD>
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.