Avatar billede Slettet bruger
05. februar 2008 - 15:07 Der er 19 kommentarer og
1 løsning

Kalde funktion uden onclick osv.

Hej

På min side har jeg en funktion i javasript, denne funktion ville jeg gerne kalde længere nede hvis nogen betingelser er i orden, så det også kan ses af min kode:

<html>
<head>
<script>
function EvalSound(soundobj) {
  var thissound=document.getElementById(soundobj);
  thissound.Play();
}
</script>
<embed src="wav.wav" autostart=false width=0 height=0 id="sound1" enablejavascript="true"></embed>
</head>
<body>
<%
length = len(str)
Response.Write(length)
If length > 100 then
%>
    <script type="text/javascript">
        EvalSound('sound1')
    </script>
<%
End If
%>
</body>
</html>


Jeg får en fejl når jeg prøver det, så hvad er metoden når der skal kaldes en funktion på denne måde ?

Hilsen Michael
Avatar billede w13 Novice
05. februar 2008 - 16:32 #1
Ja okay, men jeg har lige et par rettelser. =) Du skal altid angive type="text/javascript" i et <script>-tag, der indeholder JavaScript. Embed-elementet må ikke ligge i head-sektionen, så ryk det ned i body.

Og hvilken fejlmeddelelse får du? Det er jo den, der fortæller os præcis, hvad der er galt.
Avatar billede w13 Novice
05. februar 2008 - 16:32 #2
Du kalder ellers funktionen rigtigt!
Avatar billede roenving Novice
06. februar 2008 - 00:29 #3
-- mon ikke der er en initialiseringstid, så lyden slet ikke findes endnu ?-)

-- og så er embed-tags vel ikke så gode at benytte, brug noget w3c-rekommenderet, f.eks. <object> (se f.eks. http://blooberry.com/indexdot/html/tagpages/e/embed.htm !-)
Avatar billede w13 Novice
06. februar 2008 - 07:55 #4
Kan du ikke bare sætte autostart til true i dette tilfælde?
Avatar billede Slettet bruger
06. februar 2008 - 08:43 #5
Koden er rettet til. Jeg får fejlen:

"Objektet understøtter ikke denne egenskab eller metode"

Kan vel ikke bruge autostart da lyden først skal køre når lenght er over 100 feks
Avatar billede w13 Novice
06. februar 2008 - 09:14 #6
Kan du så ikke lade være med at sætte den ind, når length er under?
Avatar billede Slettet bruger
06. februar 2008 - 09:22 #7
Jo det er rigtigt det kunne jeg faktisk godt gøre. Men nu bliver jeg bare nysgerrig på hvorfor det ikke virker?
Avatar billede w13 Novice
06. februar 2008 - 18:40 #8
Det kunne jo være, fordi den ikke er loadet på det tidspunkt, som Roenving påpeger, eller måske fordi den ikke må være placeret i head-sektionen.
Avatar billede w13 Novice
13. februar 2008 - 16:15 #9
Kommet videre her?
Avatar billede Slettet bruger
14. februar 2008 - 09:36 #10
Nej ikke rigtigt får samme fejl: "Objektet understøtter ikke denne egenskab eller metode"

Måske kan du se en fejl ?:


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>...</title>
</head>
<body>
<script type="text/javascript">
function EvalSound(soundobj) {
  var thissound=document.getElementById(soundobj);
  thissound.Play();
}
</script>
<embed src="wav.wav" autostart=false width=0 height=0 id="sound1" enablejavascript="true"></embed>

<%
length = len(str)
Response.Write(length)
If length > 4830 or instr(str,"img") then
%>
    <script type="text/javascript">
        EvalSound('sound1')
    </script>
<%
End If
%>
</body>
</html>
Avatar billede w13 Novice
14. februar 2008 - 10:00 #11
Det lader ikke til, at browseren accepterer kommandoen "Play()" på embed-objektet. Hvad hvis du retter:

  thissound.Play();

til:

  thissound.autostart="true";

?
Avatar billede w13 Novice
14. februar 2008 - 10:09 #12
Alternativt kunne du vel bare indsætte embed-tingen med JavaScript, så burde den vel gå i gang:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title></title>
</head>
<body>

<script type="text/javascript">
var newElement=document.createElement("embed");
newElement.setAttribute("src","wav.wav");
newElement.style.cssText="width:0;height:0";
document.getElementsByTagName("body")[0].appendChild(newElement);
</script>

</body>
</html>
Avatar billede w13 Novice
14. februar 2008 - 10:24 #13
Nok lidt bedre med:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title></title>
</head>
<body>

<script type="text/javascript">
var newElement=document.createElement("embed");
newElement.setAttribute("src","wav.wav");
newElement.style.display="none";
document.getElementsByTagName("body")[0].appendChild(newElement);
</script>

</body>
</html>

Men så ved jeg ikke, om den kan afspille.
Avatar billede Slettet bruger
14. februar 2008 - 10:53 #14
Hvis jeg laver et link med onlick og kalder funktionen så virker det fint, så det er derfor det er lidt mærkeligt det ikke virker hvis jeg bare kalder funktionen?
Avatar billede w13 Novice
14. februar 2008 - 11:06 #15
Hvordan skriver du det i linket?
Avatar billede Slettet bruger
14. februar 2008 - 11:12 #16
Sådan:

<a href="#" onclick="EvalSound('sound1')">Klik</a>
Avatar billede w13 Novice
14. februar 2008 - 11:13 #17
Nu har jeg løst mysteriet. Hvis du kalder den med følgende funktion, virker det:

window.setTimeout("EvalSound('sound1')",200)

Den skulle bare have tid til at loade embed'en, før du kan sætte den til at spille.

Men ville det ikke - i dette tilfælde - være bedre bare at ændre på attributten "autostart"? Altså sætte autostart="true" med ASP, hvis den skal starte, og eller autostart="false"?

Alternativt kan du måske sætte en onload="EvalSound('sound1')" på embed, så det først køres, når den er loadet.
Avatar billede Slettet bruger
14. februar 2008 - 11:18 #18
Jeg det virkede, så det var fordi den ikke havde nåede at loade lyd filen inden den blev kaldt?

Jo kunne godt være det var lidt smartere :)

Smid et svar.

Tak for hjælpen.
Avatar billede w13 Novice
14. februar 2008 - 11:19 #19
Det tror jeg, ja. :)
Avatar billede w13 Novice
14. februar 2008 - 11:30 #20
Tak for point!
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

IT-JOB

Netcompany A/S

Test Consultant

AL Sydbank A/S (tidligere Arbejdernes Landsbank)

Tech Lead til Datacenter Operations

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Netværksteknikere til design, drift og vedligehold ved Cyberdivisionen

Netcompany A/S

Senior Network Engineer