Avatar billede Cyberdata.dk Praktikant
25. oktober 2005 - 20:11 Der er 18 kommentarer og
1 løsning

Fjerne irreterende lyd

Er det muligt at fjerne den klik lyd der kommer når man refresher?
eller er der nogen dar har en bedre løsning på, at få opdateret sin indkøbs kurv, med nopcart?
http://www.dk-toys.dk

Her er lidt kode.

<html>

<head>
<meta http-equiv="refresh" content="3">
<SCRIPT language="JavaScript" type="text/javascript" SRC="butik/htdocs/language-dk.js"></SCRIPT>
<SCRIPT language="JavaScript" type="text/javascript" SRC="butik/htdocs/nopcart.js"></SCRIPT>

<STYLE type="text/css">
<!--
.minicart {
    COLOR: #000000;
    font-size: 14px;
    font-weight: bold;
    }               
-->
</STYLE>
<SCRIPT language="JavaScript" type="text/javascript">
<!--

//=====================================================================||
//      BEGIN  Mini Shopping Cart modification            ||
//=====================================================================||
//

//---------------------------------------------------------------------||
// FUNCTION: Print_miniCart                                            ||
// PARAMETERS: none                                                    ||
// RETURNS: Number of items and total cost of cart contents            ||
// PURPOSE: Aesthetics                                                ||
//---------------------------------------------------------------------||

function Print_miniCart() {
var strOutput = ""; //String to be written to page
var strTotal = ""; //Total cost formatted as money
var fItems = 0;
var fTotal = 0;
var iNumberOrdered = 0; //Number of products ordered


iNumberOrdered = GetCookie("NumberOrdered");
if ( iNumberOrdered == null )
iNumberOrdered = 0;


for ( i = 1; i <= iNumberOrdered; i++ ) {

NewOrder = "Order." + i;
database = "";
database = GetCookie(NewOrder);
// replace following with your order extractor
Token0 = database.indexOf("|", 0);
Token1 = database.indexOf("|", Token0+1);
Token2 = database.indexOf("|", Token1+1);
Token3 = database.indexOf("|", Token2+1);
Token4 = database.indexOf("|", Token3+1);
Token5 = database.indexOf("|", Token4+1);

fields = new Array;
fields[0] = database.substring( 0, Token0 ); // Product Thumbnail
fields[1] = database.substring( Token0+1, Token1 );// Product ID
fields[2] = database.substring( Token1+1, Token2 ); // Quantity
fields[3] = database.substring( Token2+1, Token3 ); // Price
fields[4] = database.substring( Token3+1, Token4 ); // Product Name/Description
fields[5] = database.substring( Token4+1, Token5 ); // Weight
fields[6] = database.substring( Token5+1, database.length ); //Additional Information

// replace above with your order extractor

fItems += (parseInt(fields[2]));
fTotal += (parseInt(fields[2]) * parseFloat(fields[3]) );

}

strTotal = moneyFormat(fTotal);

// ======================
strOutput = '<table width=150 border=0 cellpadding=0 cellspacing=0 summary="mini-cart"><td><tr>';
strOutput += '</td><td class=minicart>';

    if ( iNumberOrdered == 0) {
            strOutput += 'Din kurv er tom.';
    } else {
        if (iNumberOrdered == 1) {
                strOutput +=  '1 vare, '+MonetarySymbol + strTotal; 
        } else {
                strOutput += fItems + ' varer, '+MonetarySymbol + strTotal;
        }
       
    }
strOutput += '</td></tr></table>';
document.write(strOutput);

}
// end of function-->
</SCRIPT>
<title>DK-Toys.dk</title>
<meta name="generator" content="Namo WebEditor v6.0">
</head>
<body bgcolor="white" text="black" link="blue" vlink="purple" alink="red" topmargin="0" marginheight="0">
<script language="JavaScript">
setTimeout("self.location.reload(true)",3000);
</script>
<p align="left">
<script language="javascript">         
Print_miniCart();               
</script>
</p>
</body>
</html>
Avatar billede visualdeveloper Nybegynder
25. oktober 2005 - 20:14 #1
klik lyd ???
Avatar billede ztyxx Nybegynder
25. oktober 2005 - 20:17 #2
lyden skal fjernes af brugerens pc, det er ikke noget du kan kode dig ud af
Avatar billede Cyberdata.dk Praktikant
25. oktober 2005 - 20:18 #3
det siden gør nu, er at den refresher iframen showcart hvert 3. sekund og det giver en irreterende lyd hver gang. (skulle jo gerne holde kunden i butikken uden at de får dårlige nerver) :-)
Avatar billede Cyberdata.dk Praktikant
25. oktober 2005 - 20:20 #4
men er der så en anden og måske bedre løsning, indholdet i kurven bliver gemt i en cookie.
Avatar billede Cyberdata.dk Praktikant
25. oktober 2005 - 20:22 #5
er det f.eks. muligt at gøre sådan at den kun refresher når cookien bliver ændret?
Avatar billede horsmark Nybegynder
25. oktober 2005 - 20:40 #6
joda efter din addItem funktion til kurven så fyr Print_miniCart(); af umiddelbart efter
Avatar billede Cyberdata.dk Praktikant
25. oktober 2005 - 21:47 #7
hvordan det?, kommer beløbet så ikke til at blive vist det forkerte sted?
Avatar billede razmuz_dk Nybegynder
25. oktober 2005 - 22:32 #8
En løsning ville være at bruge XMLHTTPRequest. Men det ville kræve et stort arbejde med at skrive en masse ny kode. Læs mere om princippet her: http://jibbering.com/2002/4/httprequest.html
Avatar billede olebole Juniormester
26. oktober 2005 - 02:35 #9
<ole>

Det ville være komplet fjollet at begrænse sig til de browsere, der kan bruge XmlHttpRequest. Har man en forretning kørende, har man jo ikke råd til at udelukke de rødhårede - så hellere fortsætte med XML-fri AJAX  ;o)

Det kan ikke være:

<script language="JavaScript">
setTimeout("self.location.reload(true)",3000);
</script>

der klikker. Den _kan_ ikke komme til at klikke, så det må ligge et andet sted  :)

/mvh
</bole>
Avatar billede Cyberdata.dk Praktikant
26. oktober 2005 - 02:51 #10
ole>> Det er kommet efter java scriptet blev sat ind.

horsmark>> Hvordan ville du gøre det? skal du bruge noget mere kode, for at vise det. Er desværre ikke den store haj til det :-)
Avatar billede olebole Juniormester
26. oktober 2005 - 03:27 #11
Hvornår det er opstået ændrer ikke ved, at det ikke er _den_ opdatering, der giver lyden. Du må opdatere noget andet, som du ikke viser i koden her i tråden.

Det er med 120% sikkerhed ikke den viste kode, der afgiver kliklyden i IE - med mindre du er i besiddelse af en helt speciel IE-version, der ellers ikke er på nettet  :)
Avatar billede Cyberdata.dk Praktikant
26. oktober 2005 - 03:29 #12
laver den ikke klik lyd hos dig?
Avatar billede olebole Juniormester
26. oktober 2005 - 03:31 #13
Jo, men den stammer ikke fra den kode, du viser her  :)

Du kan evt. bare skrive dette dokument og teste:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <title>TITLE</title>
<script type="text/JavaScript">
setTimeout("self.location.reload(true)",3000);
</script>
</head>
<body>


</body>
</html>

- læg i øvrigt mærke til, at jeg skriver korrekt syntaks i script-tagget. Den fejl afgiver heller ikke kliklyd - men bør alligevel rettes  :)
Avatar billede Cyberdata.dk Praktikant
26. oktober 2005 - 13:32 #14
det kan jeg se, men kan det så være fordi at der er sat php stat ind på index siden, selv om det ikke er den der bliver opdateret?
Avatar billede Cyberdata.dk Praktikant
26. oktober 2005 - 17:23 #15
ole>> så virker det, det var fordi, jeg havde sat en meta refresh ind på siden der lå på nettet :-) (dumme mig)

Men den står og blinker hele tiden.
Jeg synes at horsmark's løsning lyder interessant, men jeg ved bare ikke hvordan jeg skal lave det. vi giver ham lige en chance for at komme med et forslag.

Hvis horsmark ikke kommer med en bedre løsning, hvor den ikke opdaterer hele tiden, så får du pointene.
Avatar billede olebole Juniormester
29. oktober 2005 - 01:44 #16
Prøv at skrive en fil (test.php):

<?
$str = date("H:i:s", time());
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<script type="text/JavaScript">
parent.myFunction("<?=$str?>");
setTimeout("location.reload(true)", 3000);
</script>
</body>
</html>

- og en anden fil, der ser sådan ud:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <title>TITLE</title>
<script type="text/JavaScript">
function myFunction(str) {
    document.getElementById("gnu").innerHTML = "Tid for opdatering: " + str;
}
</script>
</head>
<body>

<div id="gnu">&nbsp;</div>

<iframe src="test.php" style="display:none"></iframe>

</body>
</html>

Så vil du få indskrevet en ny tid i div'et, hvergang dokumentet i iframe'en opdaterer.

Det har du ikke en squid at bruge til, men det viser, hvordan du kan opdatere en del af en HTML-side, uden hele siden opdaterer. AJAX kaldes teknikken - med et af de nye buzz-words på WWW  :)
Det står for 'Asynchronous Javascript And Xml' - men brugen af XML er dog ikke en nødvendighed.
AJAX er ikke en ny teknologi, men blot et ord for en samling af forskellige teknikker, der asynkront kan udveksle data mellem en server og en JavaScript-enabled HTTP-klient (typisk en browser).
Avatar billede Cyberdata.dk Praktikant
12. november 2005 - 05:10 #17
Hej Ole.
Undskyld den sene feedback :-)
Kan du ikke ligge et svar, så får du pointene.
er det muligt at bruge dit sidste eksempel til at opdatere siden uden at den flimrer?
Avatar billede Cyberdata.dk Praktikant
13. december 2005 - 02:25 #18
lukker
Avatar billede roenving Novice
18. januar 2006 - 14:38 #19
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