webForumDet fria alternativet

Rensa variabel...

JavaScript

8 svar · 510 visningar · startad av tronez

Medlem sedan juli 2001728 inlägg
Frågan#1

Något luddig rubrik, men här är iaf mitt problem. Jag har skrivit lite kod som ska ta en URL från
en inputbox i top framen och öppna denna URL i main frame, där den tar tid hur lång tid det tog osv, har fixat detta.

Men efter den räknat ut hur lång tid det tagit att ladda sidan ska den skriva ut resultatet samt länk i den den högra framen. Länken ska åter öppna URL:en i mainframe..


var startTime;
var url;
var tDiff;
var stopTime;
var showURL;
var arre = new Array();
var i = 0;
function goURL(url)
{	
	showURL = url;
	window.open(showURL,'main');
	startTimer();
}
function startTimer()
{
	startTime = new Date();
}
function enable(){

		frames[ 0 ].document.form1.bakk.disabled=true;
		frames[ 0 ].document.form1.forw.disabled=true;

}
// när framen laddats klart anropas denna funktion
function stopTimer()
{	
	stopTime = new Date();
	tDiff = (stopTime.getTime() - startTime.getTime())/1000;
	var newTime = Math.round(tDiff * 10) / 10;
	alert("Sidan har laddats klart... det tog "+ newTime +" sekunder att ladda sidan");
	  
	[B]arre[i] = frames[ 2 ].document.write("<a href=\""+showURL+"\" target=\"main\" onclick=\"parent.startTimer()\">"+ showURL + " ( " + newTime + " s )</a><br />");[/B]
		
	if(frames[ 2 ].document.body.innerHTML == "")
	{
			return;
	}
	else{
		enable();
	}
}

Men nu är det så om jag klickar på länken i högra framen, så öppnas visserligen en URL i mainframe
men inte den rätta, den tar nämligen den URL jag senast skrev i inputen på top framen.

Så som jag tycker det ska gå till, så vill jag inte ( koden där jag har fetmarkerat ) anropa funktionen startTimer()
jag vill hellre skicka en inparameter till funktionen goURL så den uppdaterar den URL som finns i den funktionen.

Nåja kanske lite kasst föklarat, men fråga gärna om ni inte förstår ;)

/r: ni kan även se sidan här för att enklare förstå mitt problem

Medlem sedan aug. 20039 340 inlägg
#2

Två lösningar, båda använder sig av this.url i onclick. Var nog det du letade efter...

 
//	arre[i] = frames[ 2 ].document.write("<a href=\""+showURL+"\" target=\"main\" onclick=\"parent.startTimer();parent.showURL = this.href;\">"+ showURL + " ( " + newTime + " s )</a><br />");
	arre[i] = frames[ 2 ].document.write("<a href=\""+showURL+"\" target=\"main\" onclick=\"parent.goURL (this.href);\">"+ showURL + " ( " + newTime + " s )</a><br />");

Dessutom har jag fixat lite annat...

onsubmit="parent.goURL(this.sendURL.value) ;return false;"

Gör att toppramen laddas om hela tiden...
Så är jag skeptisk till att du använder stopTimer() i main.html. Varför? Skippa åtminstone att inkludera his.js där och skriv

<BODY onload="parent.stopTimer()">

om du absolut måste ha med stopTimer() där.

Intressant grej detta. Kan jag fortsätta utveckla den? Kan bli något seriöst!

Medlem sedan juli 2001728 inlägg
#3

Tack för svaret nitro2k01, funkade perfekt.

Sen att onload="startTimer()" låg i main.html, var inte meningen, det satta jag nog dit när jag började med koden, sen har jag inte vart inne i den koden så mkt eftersom den knappt används. Så den e borta nu!

Givetvis får du göra vad du vill med koden...

Medlem sedan juli 2001728 inlägg
#4

Ahh, skulle behöva lite mer hjälp :)

I min topframe har jag ju även 2 buttons som man ska ett steg bakåt resp. framåt.

Om jag är på den sista arrayen i arre *där mina länkar ligger, så ska den disabla framåt knappen så man inte kan gå framåt någe mer, detsamma gäller för bakåtknappen, om 0 disabla bakåt.

Hur ska man gå tillväga när det gäller detta?*

Medlem sedan aug. 20039 340 inlägg
#5

Håller på med det nu.
Får jag fråga varför du gör detta? Är det nåt du använder själv, eller är det mest för att lära dig?

Medlem sedan juli 2001728 inlägg
#6

Nej, det är inget jag kommer använda själv, utan för att jag försöker lära mig mer om hur man skickar saker frames emellan.

Medlem sedan juli 2001728 inlägg
#7

Det största problemet med det här, är ju att stopTimer() körs när main frame har laddats, då läggs ju även en ny rad till i arrayen, vilket gör att man kommer ju aldrig till slutet av arrayen?

Medlem sedan aug. 20039 340 inlägg
#8

Ok, här kommer en helt ny version, mer eller mindre baserad på din ursprungliga. Den är kraftigt förbättrad och koden är delvis objektorienterad och väl strukturerad.

Medlem sedan juli 2001728 inlägg
#9

jodu, den funkade perfekt!

Ska titta igenom den å försöka förstå mig på den bara :birp

296 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
154 ms — deklarationer (db)
0 ms — hämta statistik (cache)
138 ms — hämta tråd, inlägg och bilagor (db)
155 ms — ändringar (db)