webForumDet fria alternativet

Frameset-funktion strular

9 svar · 245 visningar · startad av Palle

PalleMedlem sedan apr. 20002 716 inlägg
#1

Hmm.. jag avskyr frames, dock måste jag använda det denna gång eftersom kunden inte vill ändra nått i grundstrukturen på sidan.
Jag får det inte att fungera så som jag vill i alla webbläsare..
- Det fungerar bra i IE och Moz, men i Opera och Netscape kan man inte navigera vidare.

Det knepiga är att jag är i behov att skjuta ihop 2 kolumner vid ett tillfälle, detta för att få plats med en speciell sida.
Är värdena url2 och target2 tomma i funktionen skall content vara över hela content_frameset-framen, är det inte tomt skall det vara som vanligt.

Mina länkar ser ut enligt följande:

[red]<a href="#" onclick="getUrl('main.asp','content','news.asp','s_right');"> Som vanligt.. </a>
<a href="#" onclick="getUrl('spec.asp','content','','');"> Över hela framen.. </a>
...
osv[/red]

Och funktionen ser ut så här:

[red]function getUrl(url1,target1,url2,target2) {
	if(url1.length>0){
		parent.document.getElementById("content_frameset").cols="582,*";
		parent.document.getElementById(target1).src=url1;
	}

	if(url2.length>0){
		parent.document.getElementById("content_frameset").cols="582,*";
		parent.document.getElementById(target2).src=url2;
	} else {
		parent.document.getElementById("content_frameset").cols="763,0";
		parent.document.getElementById(target1).src=url1;
	}		

}[/red]

Själva framesettet ser ut enligt bifogad bild:

Någon som kan ge mig lite tips på andra sätt att lösa detta på, alt. vad som behövs ändras i den befintliga koden för att detta även skall fungera i Netscape och Opera. (kunden kräver det)

frameset.gif
Peter SMedlem sedan dec. 20025 484 inlägg
#2

Sätt "name"-attributet på ramen med id content_frameset till det samma och testa följande:

<script type="text/javascript">
<!--

function getURL(){
	var a=arguments;

	switch(a.length){
	case 4:
		parent.frames["content_frameset"].cols="582,*";	
		parent.frames[a[1]].location.href=a[0];
		parent.frames[a[3]].location.href=a[2];
		break;
	case 2:
		parent.frames["content_frameset"].cols="100%";
		parent.frames[a[1]].location.href=a[0];
		break;
	}
};

//-->
</script>

...

<a href="javascript:void(getURL('main.asp','content','news.asp','s_right'))">Som vanligt...</a><br>
<a href="javascript:void(getURL('spec.asp','content'))">Över hela</a>

Glöm inte att ta bort mellanrummet i ordet "javascript" i länkarna ;)

:)

PalleMedlem sedan apr. 20002 716 inlägg
#3

Wee! Framsteg! :bire

..men..

Nu öppnas alla länkarna i top, alltså där länkarna ligger,
istället för de targets som följer med i funktionsanropet.

PalleMedlem sedan apr. 20002 716 inlägg
#4

Hmm.. glöm mitt senaste inlägg. :r :OO

Jag får nu felet "Ett objekt förväntas" på rad 1..
..och eftersom Rad 1 inte innehåller nått så säger inte det så mycket tyvärr.

colioneMedlem sedan juni 20013 386 inlägg
#5

På vilken rad?

PalleMedlem sedan apr. 20002 716 inlägg
#6

Redigerade nyss mitt inlägg ovan. ;)

PalleMedlem sedan apr. 20002 716 inlägg
#7

Ok.. nu fick jag bort det felmeddelande, hade missat att ändra funktionsnamnet. *morr* :r

Men.. tyvärr hjälpte det inte mycket. :(
Nu fungerar det bara i IE, i de andra webbläsarna jag testar det i är det heldött tyvärr.
Inget felmeddelande, nada..

Peter SMedlem sedan dec. 20025 484 inlägg
#8

Det verkar inte gå att referera "frameset"-elementen på ett tillfredsställande sätt, så du får nog modifiera "frameset"-koden vid anrop av getURL()-funktionen.

:)

PalleMedlem sedan apr. 20002 716 inlägg
#9

Jag har nästan fått det att fungera.. ;)
Nu är det bara Opera som inte vill ändra mitt frameset så det går över hela.

*forstätter knyppla*

Peter S - Du ska ha tack! :)

Peter SMedlem sedan dec. 20025 484 inlägg
#10

Jag har också fått det att fungera i alla webbläsare utom Opera. Man får fundera ett tag till :)

:)

Genererad på 379 ms · cache AV · v20260730165559-full.f96bc7eb