Avatar billede hulla Novice
24. oktober 2002 - 08:49 Der er 44 kommentarer og
1 løsning

Kald af JavaScript function

Jeg tør næsten ikke spørge i dag, nute ! :)

Men hvordan vil et kald til en JavaScript function, fra en VBScript sub se ud ?

Sådan her kan jeg ikke få det til at virke:

<script language="javascript">
        function Alerts(){
                alert( "Niks pille");
            }
        </script>
    </HEAD>

sub test
Alerts()
end sub

Jeg får følgende fejl meddelelse:

Name 'Alerts' is not declared.
Avatar billede z42cool Nybegynder
24. oktober 2002 - 09:03 #1
Er din "sub test" erklæret server-side eller client-side?
Avatar billede z42cool Nybegynder
24. oktober 2002 - 09:05 #2
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>

<body onload="Test()">
</body>

</html>
Avatar billede z42cool Nybegynder
24. oktober 2002 - 09:07 #3
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
Avatar billede hulla Novice
24. oktober 2002 - 09:18 #4
jeg kan til dels få det til at virke,.. men lige nu spørger jeg på en Session variable før den smider alert´en.

altså

If(Session("minVar")="True") Then
Alerts()
end if

men det virker ikke,..kan man ikke bruge session variable til det?
Avatar billede nute Nybegynder
24. oktober 2002 - 09:43 #5
prøv:

If(<%= Session("minVar") %> = "True" ) Then
Alerts()
end if

/nute
Avatar billede z42cool Nybegynder
24. oktober 2002 - 09:44 #6
Eller:

If(Session("minVar")="True") Then
  Response.write("<script>Alerts();</script>");
end if

Du kan ikke blande client-side og server-side kode. Session variabler er server-side og kan kun bruges server-side!
Avatar billede nute Nybegynder
24. oktober 2002 - 09:53 #7
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
Avatar billede hulla Novice
24. oktober 2002 - 09:54 #8
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 ?
Avatar billede nute Nybegynder
24. oktober 2002 - 09:58 #9
hulla >> prøv dette:

<html>

<head>
    <script language="javascript">
        function Alerts()
        {
            alert("Hello world");
        }
    </script>
    <script language="VBScript">
        If("<%= Session("minVar") %>" = "True" ) Then
            Alerts()
        end if
    </script>
</head>

<body onload="Test()">
</body>

</html>
Avatar billede hulla Novice
24. oktober 2002 - 10:06 #10
tjaa nute,.den kører jo stadigvæk Alerts() hver gang den loades,..altså før brugeren overhovedet har gjort noget.
Avatar billede hulla Novice
24. oktober 2002 - 10:10 #11
kan man ikke sende en parameter med når man kalder Alerts() ?

altså noget med Alerts(var a)  ,.eller ?
Avatar billede nute Nybegynder
24. oktober 2002 - 10:14 #12
hov ... jeg glemte en ting. Prv denne:

<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>
Avatar billede hulla Novice
24. oktober 2002 - 10:23 #13
Hvorfor virker dette her så ikke?:

<script language="javascript">
        function Alerts(){
                alert("hejsa");
            }
        </script>
        <script language="VBScript">
              function Test
                  Alerts()
              end function
        </script>
    </HEAD>

og i body onloader jeg Test()
Avatar billede hulla Novice
24. oktober 2002 - 10:40 #14
skriver jeg NØJAGTIG det samme, men bare onloader Alerts(),. så får jeg lige så fint en box med "hejsa"
Avatar billede hulla Novice
24. oktober 2002 - 11:01 #15
Det virker ikke,..hvad plejer I at spørge på før i fyrer en alert box af,..man må da  kunne overføre et eller andet fra server siden til klient siden,

eller hvordan fortæller I brugeren at det her dur ikke ?
Avatar billede odegaard Nybegynder
24. oktober 2002 - 11:39 #16
>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".
Avatar billede z42cool Nybegynder
24. oktober 2002 - 12:28 #17
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!
Avatar billede hulla Novice
24. oktober 2002 - 12:44 #18
odegaard,...hvis du læser min kommentar lige inden så har jeg postet koden som ikke virker,..DEN fik jeg da ikke nogen kommentarer på
Avatar billede z42cool Nybegynder
24. oktober 2002 - 12:55 #19
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>
Avatar billede hulla Novice
24. oktober 2002 - 12:57 #20
det var et forslag fra nute i kommentaren lige inden  :)
Avatar billede hulla Novice
24. oktober 2002 - 13:10 #21
Jeg prøver lige på en anden måde:
Dette her er fra min aspx.vb side, og den går i else hvis Selecten fra Db er tom. altså dataReader er = "false"

Else
    "Hvad skal der stå her for at min Javascript function kun bliver
      kørt når den først er røget herind?"
End If

<script language="Javascript">
function Test(){
if( et eller andet){
alert("hej")
}
}
Avatar billede hulla Novice
24. oktober 2002 - 14:04 #22
er der ingen der gider ?
Avatar billede nute Nybegynder
24. oktober 2002 - 14:35 #23
z42cool >> *host* *host*

Hvis jeg skriver sådan:

<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.

/nute
Avatar billede hulla Novice
24. oktober 2002 - 14:53 #24
ok nute,..jeg har skrevet som dig:


<script language="javascript">
Function Alerts(){
var minVar = <%= Session("minVar") %>;
alert(minVar)
}
</script>

body onload="Alerts();"

i min aspx.vb pageload sub har jeg skrevet Session("minVar") = "hej"

skulle det ikke virke så ?

og du har vist ret i at jeg ikke har styr på hvad jeg laver :)
Avatar billede nute Nybegynder
24. oktober 2002 - 15:00 #25
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 ????

/nute
Avatar billede hulla Novice
24. oktober 2002 - 15:08 #26
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 :)
Avatar billede hulla Novice
24. oktober 2002 - 15:18 #27
jeg ved altså virkelig ikke hvad der er galt,..

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 ?
Avatar billede nute Nybegynder
24. oktober 2002 - 16:25 #28
hvordan ser din html-kode ud efter siden har loadet ? ( højreklik og vælg "view source" )
Avatar billede hulla Novice
24. oktober 2002 - 19:12 #29
sådan her :

    <script language="JavaScript">
        function Alerts()
        {
            alert("hej");
        }
        </script>
        <script language="VBScript">
        function Test()
            Alerts()
        end function
        </script>
       
    </HEAD>
    <body style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana" onload="Test()" onload="ShowProperties()" MS_POSITIONING="GridLayout">
Avatar billede z42cool Nybegynder
24. oktober 2002 - 19:54 #30
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.
Avatar billede nute Nybegynder
24. oktober 2002 - 20:00 #31
hullu >>

1) du har to 'onload' attributter på dit <body> tag, det skal du ikke have. skriv dit <body> tag sådan:

<body style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana" onload="Test();ShowProperties()" MS_POSITIONING="GridLayout">

2) Du mangler jo stadig din if setning i 'Test()' funktionen

/nute
Avatar billede nute Nybegynder
24. oktober 2002 - 20:11 #32
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.

/nute
Avatar billede z42cool Nybegynder
24. oktober 2002 - 20:12 #33
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>
       
    </head>
   
    <body>
        <form id="Form1" method="post" runat="server">
        </form>
    </body>

</html>
Avatar billede hulla Novice
24. oktober 2002 - 20:22 #34
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...

Det virker snart lidt håbløst
Avatar billede hulla Novice
24. oktober 2002 - 20:25 #35
dette her giver en alertbox med "hej"

<script language="JavaScript">
        function Alerts()
        {
            alert("hej");
        }
        </script>
        <script language="VBScript">
        function Test
            Alerts()
        end function
        </script>
       
    </HEAD>
    <body style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana" onload="Alerts()";"ShowProperties()" MS_POSITIONING="GridLayout">
       
Men dette her gør ikke :

<script language="JavaScript">
        function Alerts()
        {
            alert("hej");
        }
        </script>
        <script language="VBScript">
        function Test
            Alerts()
        end function
        </script>
       
    </HEAD>
    <body style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana" onload="Test()";"ShowProperties()" MS_POSITIONING="GridLayout">
Avatar billede nute Nybegynder
24. oktober 2002 - 20:27 #36
dit <body> tag skal se sådan ud:

<body style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana" onload="Test();ShowProperties();" MS_POSITIONING="GridLayout">
Avatar billede hulla Novice
24. oktober 2002 - 20:46 #37
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..:(
Avatar billede nute Nybegynder
24. oktober 2002 - 23:33 #38
well ... så må det være noget andet galt ... det fungerer som det skal hos mig ...
Avatar billede hulla Novice
25. oktober 2002 - 08:18 #39
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>
Avatar billede odegaard Nybegynder
25. oktober 2002 - 08:34 #40
Er True = true i VBscript?
...bemærk de store bogstaver.
Avatar billede hulla Novice
25. oktober 2002 - 08:41 #41
hvad betyder det, når man under kørsel får en script fejl, hvor den forklarer det med at "et objekt var ventet"

Om jeg så fjerner al hvad jeg har af script på siden så får jeg ALTID den script fejl
Avatar billede hulla Novice
25. oktober 2002 - 09:02 #42
nu virker langt det meste af det,.. I får alle tak og hvis nute vil give et svar så deles han med z42cool om pointene(som bliver hævet lidt)  :-)
Avatar billede nute Nybegynder
25. oktober 2002 - 09:35 #43
du skal sætte "" rundt <%= Session("minVar") %> ... som jeg skrev i mit indlæg @ 24/10-2002 09:53:09

<script language="VBScript">
        function Test()
            If("<%= Session("minVar") %>" = "true" ) Then
                  Alerts() 
            end if
        end function
        </script>
Avatar billede hulla Novice
25. oktober 2002 - 10:38 #44
som sagt så mange tak for den tålmødige hjælp og giver du ikke lige et svar nute ?
Avatar billede nute Nybegynder
25. oktober 2002 - 13:34 #45
svar
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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