Jag har två stycken popuprutor där den ena skall kunna infoga text i ett textfält som finns i den andra.
Tidigare har jag använt denna kod för att infoga text i textfält på samma sida:
function InsertText( text )
{
var TextArea = document.frmFormularnamn.txtTextFalt;
if (TextArea)
{
TextArea.value += text + "";
TextArea.focus();
}
return false;
}
Jag har försökt att anpassa detta script men jag har inte lyckats att få det att fungera. Har ni några tips?
Jag trodde man angav vilken referens ett fönster skulle ha genom att ange det i open("fonster.html", <b>"minreferens"</b>, "egenskaper") ...
Ditt sätt att skriva det på kan bli svårt eftersom öppnandet av fönstret och skrivandet av texten ligger i olika funktioner.
Jag har testat följande kod:
var win
function openWindow(url)
{
win = window.open(url, 'admin', 'width=700,height=600,menubar=0,status=1,scrollbars=1')
}
function InsertText( text )
{
var TextArea = window.opener.win.document.frmNews.txtNewsText;
if (TextArea)
{
TextArea.value += text + "";
TextArea.focus();
}
return false;
}
När jag testat det får jag bara medelande om att referensen till fönstret är null eller inget objekt.
Det konstiga är att jag använde motsvarande kod direkt ifrån fönstret där texten skall infogas och då fungerade det.
Jag ska försöka beskriva vad jag försöker göra lite tydligare:
Jag har en sida som innehåller följande javascript kopplat till en knapp
var win
function openWindow(url)
{
win = window.open(url, 'admin', 'width=700,height=600,menubar=0,status=1,scrollbars=1')
}
När jag trycker på denna knapp kommer min första popup fram. Där finns ett formulär där man fyller i en nyhetstext. Sedan skall man kunna infoga bilder också varför det finns ytterligare en knapp som öppnar ett till fönster med alla bilderna listade.
den andra popuppen öppnas med:
var fileWin
function openFileWindow(url)
{
fileWin = window.open(url, '', 'width=350,height=400,menubar=0,status=1,scrollbars=1')
}
Mitt problem är att från min andra popup kunna infoga en text i formuläret i min första popup. Koden för detta ser i nuläget ut så här:
function InsertText( text )
{
var TextArea = win.document.frmNews.txtNewsText
if (TextArea)
{
TextArea.value += text + "";
TextArea.focus();
}
return false;
}
Det felemedelande jag får är alltså att "win" är odefinierat. Om jag istället använder "window.opener.win.document" som referens så får jag meddelande om att det är null eller inte är ett objekt.
Jaha, trodde att båda popuperna öppnades från samma sida. Men förloppet är alltså att sidan öppnar en popup som i sin tur öppnar en till...
Men, du använder fortfarande window.opener för att referera till "moderfönstret", alltså det fönster som öppnade fönstret i fråga.
var TextArea = window.opener.document.frmNews.txtNewsText;
Förutsatt att formuläret heter "frmNews" och fältet "txtNewsText"
Kuriosa: win är inte definierad eftersom den härstammar i ett annat fönster och därmed en annan namespace. Skulle du kunna använda samma variabler i olika fönster skulle många script krocka eftersom man ofta har flera browserfönster öppna samtidigt.