webForumDet fria alternativet

Länka till iframe på annan sida

JavaScript

12 svar · 589 visningar · startad av AnnelieT

Medlem sedan apr. 200553 inlägg
Frågan#1

Hej!
Nya problem....Jag har sidor som jag vill att om de öppnas separat utanför min indexsidas iframe så ska det hamna rätt när det använder returnlänken. Tex om sidan Patterns öppnas, och de klickar på länken Return to menu PhotoImpact, så ska photoimpactsidan hamna inom denna ram ("indexeng.html" "iframe2")

Jag har försökt med detta script:
http://www.webforum.nu/showthread.php?s=&postid=564308#post564308

Men har inte lyckas att få det att fungera, finns det någon vänlig själ här som har någon idé hur jag kan lösa detta?

Medlem sedan dec. 20025 483 inlägg
#2

Hej!

Du får nog använda dig av querystrings. Med hjälp av spangos klass:

<a href="[b]http://hem.bredband.net/anneliesgrafiksida/indexeng.html?page=photoimpacteng.html[/b]">Return to menu PhotoImpact</a>

...

// indexeng.html

<iframe name="iframe2"></iframe>
<script type="text/javascript">
/*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
=* Bibliotek för användning av *=*=
=*=*=*=*=* frågesträngar *=*=*=*=*=
=*=*=*=* Skrivet av spango *=*=*=*=
=*=*=* <gustaf-c@dsv.su.se> =*=*=*=
=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/
function QueryString(){
	this.values = {};
	this.queryString = "";
	if(arguments.length == 0)
		this.queryString = location.search?location.search:"";
	else // hade argument
		this.queryString = arguments[0];
	if(this.queryString.indexOf("?") == 0)
		this.queryString = this.queryString.substring(1);
	var pairs = this.queryString.split("&");
	for(var i in pairs){
		pairs[ i] = pairs[ i].split("=");
		for(var j in pairs[ i]) // avkoda URL
			pairs[ i][j] = unescapePlus(pairs[ i][j]);
		var key = pairs[ i][0];
		var value = pairs[ i][1];
		if(this.values[key]){ // finns redan
			if( (typeof this.values[key]) == (typeof []) ){ // fler finns redan
				this.values[key] = this.values[key].push(value); // appendera
			} /* if array */ else if( (typeof this.values[key]) == (typeof "string")){
				this.values[key] = [this.values[key], value]; // skapa ny array
			} else this.values[key] = value;
		} else { // finns inte
			this.values[key] = value;
		} // if this.values[key]
	} // for pairs
} // function QueryString

function qsGet(key){
	var alt ="";
	if(arguments.length == 2)
		alt = arguments[1];
	return this.values[key]? this.values[key] : alt;
}

function qsToString(){
	return this.queryString;
}
QueryString.prototype.get      = qsGet;
QueryString.prototype.toString = qsToString;

function unescapePlus(str){ // unescape med plustecken
	str = globalReplace(str, "+", " ");
	return unescape(str);
}

// I Opera 5 funkar inte String.replace av någon konstig
// anledning, så vi får lov att använda en egen funktion.
function globalReplace(str, what, withWhat){ 
	var tmp = "";
	while(str.length != 0)
		if(str.indexOf(what) == 0){
			tmp += withWhat;
			str = str.substring(what.length);
		} else {
			tmp += str.charAt(0);
			str = str.substring(1);
		}//else
	return tmp;
}//globalReplace

var page = new QueryString().get("page");

if (page.length > 0){
    window.frames["iframe2"].location.href = page;
}
</script>
Medlem sedan apr. 200553 inlägg
#3

Hej igen!
Får det inte att fungera, mer än att indexsidan kommer fram, men sidan photoimpacteng.html hamnar inte i iframen.

Har lagt upp sidorna i en testfolder:
http://hem.bredband.net/anneliesgrafiksida/test/photoimpact/patterns/patterneng.html
http://hem.bredband.net/anneliesgrafiksida/test/indexeng.html

Medlem sedan dec. 20025 483 inlägg
#4

Skriptet skall ligga direkt efter <iframe>-taggen:</iframe><script....

Alternativt:

window.onload = function(){
    var page = new QueryString();
    if (page.length > 0){
        window.frames["iframe2"].location.href = page;
    }
}
Medlem sedan dec. 20025 483 inlägg
#5

En annan sak jag lade märke till, är att du har lagt </head> innanför <script>.

Medlem sedan apr. 200553 inlägg
#6

Jo, jag upptäckte det, fort o fel. lol.

Jag får det fortfarande inte att fungera, nu ligger scriptet i inom iframe2. Klickar man på tillbaka länken, så kommer indexsidans startsida fram, men ingen photoimpactsida i iframe2.

Likaså upptäckte jag att om man går via menyn till PhotoImpact och klickar på Stained Glass Patterns och vidare på tillbakalänken, så hamnar hela indexsidan i iframet.

Fattar nada! :q

Medlem sedan dec. 20025 483 inlägg
#7

:bire

Du fick nästan till det. JavaScript-koden skall ligga efter <**/**iframe>. Men vi gör så här istället: vi placerar all JS-kod i en separat fil och länkar in den.

I den bifogade .zip-filen finns en .js-fil dom du lägger i samma mapp som indexeng.html, och en .html-fil (indexeng.html) som du ersätter dess namne med.

Medlem sedan apr. 200553 inlägg
#8

Ursäkta, hade glömt att tömma offlineinnehållet!

Det funkar att gå från patternsidan, till photoimpact med indexsidan framme, men inte via menyn till PhotoImpact - Stained Glass Patterns och vidare på tillbakalänken, så hamnar hela indexsidan i iframet.

Medlem sedan dec. 20025 483 inlägg
#9

Testa att lägga till target="_top" i länken.

Medlem sedan apr. 200553 inlägg
#10

Det fungerar!!!! :D Tack så jättemycket för all hjälp!

Medlem sedan dec. 20025 483 inlägg
#11

Kul!

Glöm inte att använda funktionen acceptera som slutgiltigt svar på det inlägg som löste ditt problem.

Medlem sedan apr. 200553 inlägg
#12

Nä, jag bara skulle ge dig chansen till ett inlägg till. lol.

Medlem sedan dec. 20025 483 inlägg
#13

Den tackar man för! Se nu till att markera det svar som löste ditt problem. ;)

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