---
title: "Child problem"
type: "forum-thread"
url: "https://www.webforum.nu/amne/javascript/121561-child-problem"
topic: "JavaScript"
topic_url: "https://www.webforum.nu/amne/javascript"
author: "asmodie"
published: "2005-02-01T17:41:08.000Z"
updated: "2005-02-08T21:09:51.000Z"
replies: 10
views: 458
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/javascript/121561-child-problem"
---

# Child problem

## #1 — asmodie, 2005-02-01T17:41Z

Jag har gjort ett preview fönster som är "child" till mitt huvud fönster.

Jag använder ett JavaScript som  öppnar ett nytt fönster och skickar parametrar till fönstret.
Preview knappen kör denna funktion:

```
function openPreViewWindow()
{
	var preViewWindow = open('PreViewWorkAd.aspx','preViewWindow');
					
	if (preViewWindow.opener == null) preViewWindow.opener = self;
	
	if(preViewWindow)
	{	
		preViewWindow.focus();
	}
	
	launchParameters = new Object();
	launchParameters['heading'] = document.getElementById("txtHeading");
	launchParameters['description'] = document.getElementById("txtDescription");
	launchParameters['content'] = document.getElementById("ftbContent");
	launchParameters['companyText'] = document.getElementById("ftbCompanyText");
	launchParameters['companyLogo'] = document.getElementById("imgCompanyLogo_img");
	
	if(document.getElementById("imgCompanyLogo_id").value != "")
	{
		launchParameters['companyLogo'] = document.getElementById("imgCompanyLogo_img");
	}
	else
	{
		launchParameters['companyLogo'] = null;
	}
	
	preViewWindow.onLoad = preViewWindow.launchParameters = launchParameters;
	preViewWindow.onLoad = preViewWindow.loadParameters();
}
```

 

På den nya sidan  som öppnas ligger scriptet:

```
		function loadParameters()
		{
			var heading = window.launchParameters['heading'];
			var description = window.launchParameters['description'];
			var content = window.launchParameters['content'];
			var companyText = window.launchParameters['companyText'];
			
			document.getElementById("lblHeading").innerHTML = heading.value;
			document.getElementById("lblDescription").innerHTML = description.value;
			document.getElementById("lblContent").innerHTML = content.value;
			document.getElementById("lblCompanyText").innerHTML = companyText.value;
			
			if(window.launchParameters['companyLogo'] == null)
			{
				document.getElementById("imgCompanyLogo").style.visibility = "hidden";			
			}
			else
			{
				var logo = window.launchParameters['companyLogo'];
				document.getElementById("imgCompanyLogo").src = logo.src;
			}
		}
```

 

Problemet är att det överhuvudtaget inte funkar i Mozilla. Medans i IE funkar det för det mesta. Prolemet uppstår vid.

```
preViewWindow.onLoad = preViewWindow.launchParameters = launchParameters;
preViewWindow.onLoad = preViewWindow.loadParameters();
```

 

Problemt ligger i att koden körs i parent-fönstret innan sidan helt har laddats. Därför kan inte alltid scriptet köras. Finns det något sätt man kan kolla om sidan är laddad, och inte laddas?

För jag skulle vilja köra scriptet när sidan är helt laddad.

Jag hoppas någon har lösningen på mitt problem .

Sluta whinea! Läser ni mitt inlägg? Eller ser ni bara \<%- taggarna och inget annat?

Permalänk: https://www.webforum.nu/p/121561

## #2 — RGB, 2005-02-01T19:01Z

Var snäll och posta **inte** serverside-kod inbakad i koden som körs på klienten när du postar här. 
Posta istället koden som du får fram genom att välja tex "visa källa" i webbläsaren

Permalänk: https://www.webforum.nu/p/1543081

## #3 — asmodie, 2005-02-01T20:53Z

Förlåt. Den finns på ett ställe. För er som inte fattar det så är \<%=ClientID%\> = ett litet namn typ "minkontroll" och förlåt om den skulle vara kopplad till serverside kod. Men det var så lite att jag tyckter det inte spelar något roll. Problemet ligger inte i den koden då den enbart skriver ut ett namn på en kontroll.

Permalänk: https://www.webforum.nu/p/1543083

## #4 — Jojoxx, 2005-02-02T06:54Z

Det har inte att göra med att någon inte fattar. Det har att göra med att utesluta ev. felkällor vilket 95% av inläggen här har att göra med. Felsökning 101. Generellt sett kan felet lika gärna ligga i serverside-koden. Hämtas data från en db och du sedan använder resultatet i klient-koden så kan en felatkig SQL-fråga se till att du får runtime-fel hos klienten. Därför är det en bra tumregel att inte ta med serverside-kod utan koncentrera sig på det som kommer fram till klienten. (Står även i forum-tips)

Permalänk: https://www.webforum.nu/p/1543082

## #5 — asmodie, 2005-02-02T08:39Z

\*suck\*

Permalänk: https://www.webforum.nu/p/1543084

## #6 — dectgap, 2005-02-02T12:36Z

När du skriver

```
document.getElementById("txtHeading")
```

försöker du då att komma åt ett element med *id="txtHeading"* eller *name="txtHeading"*? Om du försöker med det sistnämnda kommer det nämligen felaktigt att fungera i IE, men inte i Mozilla. Lösningen är då att ändra till idn istället.

Du skriver att det inte fungerar i Mozilla, men var blir det egentligen fel?
Firefox har en väldigt bra JavaScript-console som ger begripliga felmeddelanden. Ta gärna en titt där.

Ändra även

```
preViewWindow.onLoad = preViewWindow.loadParameters();
```

till

```
preViewWindow.onLoad = preViewWindow.loadParameters;
```

Permalänk: https://www.webforum.nu/p/1543114

## #7 — asmodie, 2005-02-02T22:21Z

Nej det är id:et jag försöker komma åt.

Problemet som uppstrår i IE är att fönstret inte hinnas laddas innan koden kör(ca 10% av gångerna) och då existerar inte preViewWindow.loadParameters();

Jag ska debugga i mozilla men jag tror att problemet allitid är att scriptet hinner köras på parent sidan.

Permalänk: https://www.webforum.nu/p/1543419

## #8 — Jojoxx, 2005-02-03T15:54Z

Varför definierar du inte onload-eventet direkt i "PreViewWorkAd.aspx"? Det borde väl vara den allra enklaste lösning på problemet?

```
window.onload=function(){
loadParameters();
}
```

Permalänk: https://www.webforum.nu/p/1546726

## #9 — asmodie, 2005-02-03T21:46Z

Jojoxx: Har inte provat den lösningen. Men jag har kört på bodyn onload=loadParameters() och då får den inte parametrarna ordentligt.

Jag ska göra en exempel tid när jag har tid. Så ni kan prova så att ni förstår problemet.

Permalänk: https://www.webforum.nu/p/1546962

## #10 — Jojoxx, 2005-02-04T06:46Z

Jag skulle nog stuva om lite:

```
function openPreViewWindow()
{
	launchParameters = new Object();
	launchParameters['heading'] = document.getElementById("txtHeading").value;
	launchParameters['description'] = document.getElementById("txtDescription").value;
	launchParameters['content'] = document.getElementById("ftbContent").value;
	launchParameters['companyText'] = document.getElementById("ftbCompanyText").value;
	launchParameters['companyLogo'] = document.getElementById("imgCompanyLogo_img");
	// Är ovanstående kanske en miss (fel objektegenskap)? Enligt exemplet så skriv den alltid över av koden under.
	launchParameters['companyLogo'] =(document.getElementById("imgCompanyLogo_id").value != "")?document.getElementById("imgCompanyLogo_img").src:null;
	var preViewWindow = open('PreViewWorkAd.aspx','preViewWindow');
	if(preViewWindow)
	{	
		preViewWindow.focus();
	}
}
```

och

```
function loadParameters()
		{
			var launchParameters=window.opener.launchParameters;
			document.getElementById("lblHeading").innerHTML = launchParameters['heading'];
			document.getElementById("lblDescription").innerHTML = launchParameters['description'];
			document.getElementById("lblContent").innerHTML = launchParameters['content'];
			document.getElementById("lblCompanyText").innerHTML = launchParameters['companyText'];
			
			if(launchParameters['companyLogo'] == null)
			{
				document.getElementById("imgCompanyLogo").style.visibility = "hidden";			
			}
			else
			{
				document.getElementById("imgCompanyLogo").src = launchParameters['companyLogo'];
			}
		}
```

Permalänk: https://www.webforum.nu/p/1547028

## #11 — asmodie, 2005-02-08T21:09Z

Tänkte bara säga att jag löste problemet och det funkar finfint. En mycket bra funktion som är överlägsen om man vill skicka variabler till ett nytt fönster utan att behöva referea till parent fönstret.

Är någon intreserad av lösningen skicka ett pm.

Permalänk: https://www.webforum.nu/p/1549048

---

Tråden på webben: https://www.webforum.nu/amne/javascript/121561-child-problem
