asmodieMedlem sedan jan. 2004501 inlägg 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?
RGBMedlem sedan dec. 1999419 inlägg 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
asmodieMedlem sedan jan. 2004501 inlägg 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.
JojoxxMedlem sedan juni 20004 308 inlägg 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)
dectgapMedlem sedan sep. 20021 655 inlägg 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;
asmodieMedlem sedan jan. 2004501 inlägg 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.
JojoxxMedlem sedan juni 20004 308 inlägg 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();
}
asmodieMedlem sedan jan. 2004501 inlägg 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.
JojoxxMedlem sedan juni 20004 308 inlägg 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'];
}
}
asmodieMedlem sedan jan. 2004501 inlägg 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.