saturdayMedlem sedan jan. 2007133 inlägg Har ett script som på enklaste vis tar ut info åt mig via Javascript:
<script language="JavaScript" type="text/javascript">
var sWidth = screen.width;
var sHeight = screen.height;
var cDepth = screen.colorDepth;
</script>
Nu ska jag skicka över det till ASP för att till slut spara in det i en databas tillsammans med lite andra värden som jag plockar direkt via ASP.
Problemet är att jag bara känner till två sätt att överföra detta till ASP på och det är via querystring eller form. Problemet med dem båda är att man måste då ladda om sidan och sedan plocka värdena med request.<det man skickat via>. I och med att detta är en besöksräknare innebär det en redirect för att få detta att fungera vilket jag självklart vill undvika så att besökaren kan backa ur sidan.
Finns det något annat sätt att få in värdena i ASP koden utan att skicka in värdena via querystring/form? Eller kanske någon annan vettig lösning så att de kan backa ur sidan?
cyprysMedlem sedan dec. 20003 563 inlägg Den metoden de flesta besöksräknare använder exempelvis.
document.write("<scr"+"ipt src=\"http://dindomän.se/
hämta.asp?width=" + screen.width + "&height=" + screen.height +
"&col=" + screen.colorDepth +"\"><\/scr"+"ipt>");
saturdayMedlem sedan jan. 2007133 inlägg
cyprys skrev:
Den metoden de flesta besöksräknare använder exempelvis.
document.write("<scr"+"ipt src=\"http://dindomän.se/
hämta.asp?width=" + screen.width + "&height=" + screen.height +
"&col=" + screen.colorDepth +"\"><\/scr"+"ipt>");
Förstår nog inte riktigt eller så missförstod du min fråga. Jag hajar att du skriver ut sökvägen med de olika värdena som jag specificerat ovan, men hur får jag denna adress att köras först då? Förstår fortfarande inte hur jag kommer undan en redirect...
saturdayMedlem sedan jan. 2007133 inlägg Kan man göra en dirty lösning kanske genom att köra redirect'en, dvs inläsningen i databasen, via en iframe som man gömmer så att den inte syns kanske? Slog mig att det borde fungera och på så vis undvika att det inte går att backa... Ska pröva det om inte någon hinner med en bättre lösning. Återkommer med resultatet...
colioneMedlem sedan juni 20014 421 inlägg varför krångla till det? Kör på cyprys lösning. iom att du sätter en asp-fil som script source så exekveras den vid inladdning har du då querystrings medskickade till den kan du läsa av dem.
cyprysMedlem sedan dec. 20003 563 inlägg Ett litet exempel så klarnar det nog.
Skapa vilken .htm-fil som helst och klistra in koden:
<html><body>
<script language="JavaScript" type="text/javascript">
<!--
document.write("<scr"+"ipt src=\"taemot.asp?res=" + screen.width + "x" + screen.height + "&col=" + screen.colorDepth +"\"><\/scr"+"ipt>");
//-->
</script>
</body></html>
Skapa en fil taemot.asp i samma katalog där du hämtar upp querystring "res" samt "col" och spara ner dem hur du vill. Då kommer du se att att skriptet gör ett anrop till din asp-fil med skärmupplösningen skickad i querystringen.
Skriptet ovan kör t.ex. /taemot.asp?res=2560x1600&col=32
saturdayMedlem sedan jan. 2007133 inlägg Ok, tack! Ska pröva.
Edit:
Har prövat men får JS error, syntaxfel.
saturdayMedlem sedan jan. 2007133 inlägg
Denkan skrev:
Ajax...?
Kan inte AJAX, men om du har ett kodförslag på det jag vill göra sätter jag mig gärna in i det. :)
cyprysMedlem sedan dec. 20003 563 inlägg Syntaxfel? Beskriv gärna närmre då koden inte borde ge något.
Däremot kan du få fel om du returnerar något konstigt från .asp-filen. Testa med att låta asp-filen endast returnera ett ";" exempelvis.
<%
' Hantera alla inparametrar och vad du vill mellan himmel och jord
request.querystring("width")
...
%>[b];[/b]
saturdayMedlem sedan jan. 2007133 inlägg Jag skapar "index.html" med följande kod:
(Line: 2, Char: 1, Error: Syntax Error. Uppstår när jag kör sidan via localhost.)
<html><body>
<script language="JavaScript" type="text/javascript">
<!--
document.write("<script src=\"getStats.asp?res=" + screen.width + "x" + screen.height + "&col=" + screen.colorDepth +"\"><\/script>");
//-->
</script>
</body></html>
Och "getStats.asp" ser ut som följer:
<html>
<head>
<title>Save stats</title>
</head>
<body>
<%
Dim myResolution, myColordepth
myResolution = request.querystring("res")
myColorDepth = request.querystring("col") + " bit"
response.write("Resolution: " + myResolution + "<br />Colordepth: " + myColordepth)
%>
</body>
</html>
cyprysMedlem sedan dec. 20003 563 inlägg Och om du skriver om getStats.asp till:
<%
Dim myResolution, myColordepth
myResolution = request.querystring("res")
myColorDepth = request.querystring("col") + " bit"
response.write("Resolution: " + myResolution + "<br />Colordepth: " + myColordepth)
%>;
... händer det något?
Problemet sitter i att man kan inte skriva ut en <script></script> inom en <script></script>
Låt den ladda in den som en bild istället.. för att slippa den där fula röda korset, sätt width=1 och height=1. Eller låt aspfilen skapa en bild som den visar.. :)
finns andra sätt.. men det är väl det enklaste..
cyprysMedlem sedan dec. 20003 563 inlägg
Fredde Mannen skrev:
Problemet sitter i att man kan inte skriva ut en <script></script> inom en <script></script>
Tja, eftersom jag använt lösningen själv flera gånger, en stor mängd besöksräknare använder metoden idag samt att jag sitter och tittar på en korrekt exekvering av min exempelkod utan några varningar, har jag tyvärr lite svårt att svälja ditt påstående. ;)
cyprys skrev:
Tja, eftersom jag använt lösningen själv flera gånger, en stor mängd besöksräknare använder metoden idag samt att jag sitter och tittar på en korrekt exekvering av min exempelkod utan några varningar, har jag tyvärr lite svårt att svälja ditt påstående. ;)
DÅ kan jag påpeka att den ger fel för mig i IE 7.0, men laddar jag in den som en bildfil istället funkar det primafint! ;)
Men visst kan man ladda in den i en script-tag..
// red, fixat med ett exempel.
filen: index.html
<html><body>
<script src="getStats.js" type="text/javascript"></script>
<script type="text/javascript">
// Anropa stats..
Stats();
</script>
</body></html>
filen: getStats.js
function Stats() {
var col = screen.colorDepth;
var res = screen.width + "x" + screen.height;
// anropa getStats.asp
var report=document.createElement('script');
report.type='text/javascript';
report.id="reportStats";
report.src='getStats.asp?res='+res+'&col='+col+'';
}
filen: getStats.asp
<%
Dim col, res
col = request.querystring("col")
res = request.querystring("res")
' din kod för att lägga in det i databasen..
' ..
%>
Funkade fint i IE 7 i alla fall.. :)
Och här använder den en script-tag i scripttaggen.. fast på ett annat sätt.. :)
TroxyMedlem sedan mars 20041 505 inlägg Fredde Mannen, tummen upp för DOM-scripting (y)
Helt klart mer elegant än document.write
saturdayMedlem sedan jan. 2007133 inlägg Tack så mycket för hjälpen! Fick dina grejer att fungera Fredde mannen så det fick bli lösningen och accepterat som slutgiltigt svar.
Vet inte varför jag inte fick din lösning att fungera cyprys, men jag förmodar att det är skit bakom knapparna (Jag).
colioneMedlem sedan juni 20014 421 inlägg Skäelt till att du inte fick cypryslösning att funka är för att du har tagit bort plusen mellan scr och ipt.
saturdayMedlem sedan jan. 2007133 inlägg Nytt dilemma:
Jag kör scriptet som ser ut:
<script language="JavaScript">
//GET STATS
function Stats() {
var col = screen.colorDepth;
var res = screen.width + "x" + screen.height;
var report=document.createElement('script');
report.type='text/javascript';
report.id="reportStats";
report.src='getStats.asp?res='+res+'&col='+col+'';
}
Stats();
</script>
Men, Firefox kör inte scriptet, dvs, körs inte getStats.asp med Firefox. Någon som har ett bra förslag på hur jag kan lösa det?
TroxyMedlem sedan mars 20041 505 inlägg saturday, det där borde inte fungera någonstans. Som det ser ut nu så skapar du bara ett element, men lägger aldrig till det i själva dokumentet.
Använd appendChild() för att lägga till elementet i body:
<script type="text/javascript">
//GET STATS
function Stats() {
var col = screen.colorDepth;
var res = screen.width + "x" + screen.height;
var report=document.createElement('script');
report.type='text/javascript';
report.id="reportStats";
report.src='getStats.asp?res='+res+'&col='+col+'';
[B]document.body.appendChild(report);[/B]
}
Stats();
</script>