Avatar billede evilfish Nybegynder
27. maj 2009 - 11:00 Der er 4 kommentarer og
1 løsning

Retunering af værdi fra popop fejler [Javascript i ASP .NET]

Hej eksperter

Jeg har en ASP tekstbox på min hoved side, som åbner et nyt vindue via javascript, når man klikker på den. Dette fungere udemærket, og for god ordens skyld viser jeg lige koden:

Hovedside java script:
function popWin(llInp)
{
    window.open("choosePicture.aspx","aa","width=600,height=700");      return false;
}

Hovedside tekstbox kode:
tekstbox.Attributes.Add("onClick", "return popWin('ctl00_content_tekstbox');");

(Det mærkelige navn er sat på fordi ASP ændrer navnet under runtime)

I popup vinduet har jeg, som test, lagt en tekst boks som også affyrer en et javascript når der klikkes på den:

Popop java script:
function mainValues()
{
  var lsString;
  lsString=window.document.form1['tekstbox'].value;
  alert(window.document.form1['tekstbox'].value);
  window.opener.parent.document.form1['ctl00_content_picture'].value=lsString;
  window.close();
}

Popup tekstbox:
tekstbox.Attributes.Add("onClick", "return mainValues();");

I kan se at jeg har sat en alert i min mainValues function. Det er for at teste at javascriptet virker i popup. Hvis alert bliver sat neden under linjen der skal sende værdien tilbage (window.opener.parent.document.form1....) så kommer den ikke frem når der klikkes på boksen. Der hvor den står nu bliver der smidt en alert når der klikkes.

2 Spørgsmål flyder rundt i mit hoved:
1:
Har jeg misset noget som gør at popup ikke retunere værdien korrekt

2:
Hvis alert ikke kaldes efter førsøgt retunering, bliver den linje så overhovedet kaldt?


Det skal siges at hovedvinduet er bygget op med masterpage. Ved ikke om det har nogen virkning, men selve scriptet i begge tilfælde ligger i <head>
Avatar billede fennec Nybegynder
27. maj 2009 - 11:10 #1
Tror du skal fjerne window og parent fra din JS:
window.opener.parent.document.form1['ctl00_content_picture'].value=lsString;

Skal altså være:
opener.document.form1['ctl00_content_picture'].value=lsString;
Avatar billede evilfish Nybegynder
27. maj 2009 - 11:30 #2
Jeg har kigget lidt mere på det og dundet ud af at det virker i IE, men ikke firefox. under firefox bliver opener ikke kaldt
Avatar billede fennec Nybegynder
27. maj 2009 - 11:45 #3
I FF tryk Ctrl+Shift+j. Så får du fejl konsollen op. Den skulle gerne fortælle dig hvilken linje den ikke kan lide..

ps. Ryd evt data først i fejlkonsollen og kør så siden. Så har du ikke 1000 vis af linjer...
Avatar billede ebusiness Nybegynder
27. maj 2009 - 14:55 #4
Du må ikke referere til et element bare ved at skrive elementets id, det virker nemlig kun i IE. I stedet skal du bruge document.getElementById("id").

Hvad der ellers er galt ved jeg ikke, men din kode er rimeligt rodet.

Når det er sagt så er den måde du forsøger at lave user interface på helt forkert. Hold dig til et vindue, at dele et interface op på flere vinduer er forvirrende for brugeren. Du kan i nogle tilfælde bruge en falsk popup (en skjult div placeret oveni det andet indhold på siden som bliver synlig for at give en popup effekt), men det er nok endnu lige en tand over dit webprogrammeringsniveau.
Avatar billede evilfish Nybegynder
27. maj 2009 - 15:35 #5
Hej gutter

Tak for alle de gode råd.

Jeg har sidet og kæmpet lit med det selv og fandt mine fejl. Jeg lavede 2 ting forkert:

1:
For det først targeted jeg form1 som den form jeg skulle retunere en værdi til. Det navn var forkert, det skulle være aspnetForm som navn.

2:
Jeg ledte rundt omkring og fandt ud af FF er mere præcis i sin kode validering, og derskal skal man specificeret 100% hvad det er man vil referere til. Når jeg skulle retunere skulle jeg indsætte en .document før det virkede.

Altså min opener streng skulle se således ud:
window.opener.parent.document.aspnetForm

Efter dette virkede retuneringerne og det hele.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester