webForumDet fria alternativet

Spara fil pop-up -> Cancel?

ASP

12 svar · 221 visningar · startad av CokeLight

Medlem sedan juni 2000504 inlägg
Frågan#1

Hejsan allihopa :)

Problem: När man klickar "Cancel" på en Windows pop-up som frågar om man vill "Open this file from its current location / Save this file to disk" så vet jag inte hur man fångar upp att användaren klickade på Cancel istället för okay. Kan man göra det?

(För mig känns det dessutom som om man totalt tappat kontrollen över ASP-sidan när man väl fått upp pop-up:n. En Javascript test-alert längs ner på sidan körs t.ex inte som jag trodde om man "Cancel" väljs från pop-up:n).

------------------
"Between stimulus and response is a pause wherein our ability to choose lies".

Medlem sedan mars 20002 836 inlägg
#2

Sök inne på Javascript forumet.

Sök efter - confirm - så kommer du att hitta vad du söker. Kanske krävs liiite modification, men det kan Javascript gurusarna inne i forumet svara på

cya,
PatrikB

------------------
*så kan det gå när inte haspen är på*

Medlem sedan dec. 19996 721 inlägg
#3

Nej, varken Javascript eller ASP rår på detta. Det är webbläsaren som poppar upp rutan, och det är liksom för sent att ingripa då.

Om filen som triggar dialogen är en ASP-fil, så skulle man kunna tänka sig någon form av loggning, men det blir inte någon smidig lösning.

Medlem sedan juni 2000504 inlägg
#4

Okay, tack för snabba svaren :) Jag provade först med response.redirect längst ner på sidan men den verkade "hinna före" header infot på nåt sett, för pop-up:n kom aldrig upp. Sen provade jag med en javascrpt location.href som pekade tillbaka till sidan som genererade pop-up:n, eftersom jag tänkte att klient-koden kördes efter server-koden, men i det här fallet så verkar det alltså som om det ligger bortom vår kontroll..

(Det som är "knäppt" är att om man trycker Cancel så hoppar man tillbaka till ursprungs sidan, och allt ser normalt ut. Men jag har en massa radio-knappar och rullgardinsmenyer etc, som submittar sidan, och på nåt sätt så tror browsern att jag vill "Spara en fil" för varje nästkommande submit, och ger mig den där dumma pop-up:n. Klickar man på "Refresh" så försvinner problemet dock. Fast det upplevs ju lite som en "bug" :)

Sooo.. kunde man lösa det med loggning eller... hängde inte riktigt med på hur du menade Emission? :) Fast om det är krångligt så skippar vi det.. det är ju ingen katastrof iofs.. Tack igen.

------------------
"Between stimulus and response is a pause wherein our ability to choose lies".

Medlem sedan dec. 19996 721 inlägg
#5

Beskriv lite mer vad det är du gör, gärna med lite kodexempel, så ska vi nog hitta en bra lösning.

Medlem sedan mars 20002 836 inlägg
#6

he, he ... va nog jag som va lite snabb där.
Trodde att det "skulle" komma upp en:

Vill du spara följande.
<OK><CANCEL>

Det går ju att göra med confirm, fast om man då klickar på ok så kommer man ju till den där pop-upen som frågar om man vill spara eller köra filen.

Men, använder man confirm så kommer inte sidan att fortsätta posta formuläret eftersom den ej returnerar "true" på cancel klicket.

cya,
PatrikB

------------------
*så kan det gå när inte haspen är på*

Medlem sedan juni 2000504 inlägg
#7

Emission: Oki :) Tack.. då ska jag posta lite kod så fort jag kommer hem..

(PatrikB: Yup, jag körde en javascript confirm som du sa.. användaren får ju en chans att ångra sig då iofs.. )

------------------
"Between stimulus and response is a pause wherein our ability to choose lies".

Medlem sedan juni 2000504 inlägg
#8

Ska försöka illustrera:

ListCustomers.asp har en href som man klickar på för att komma till CreateTable.asp, vilken är filen som genererar Excel-filen. Följande kod skapar Excel filen i CreateTable.asp:

response.ContentType = "application/vnd.ms-excel"
	response.AddHeader "content-disposition", "attachment; filename=" & Date() & ".xls"

'Här kommer lite HTML och ASP som användaren inte ser.

Href:n i ListCustomer.asp som anropar Excel filen är inte spec. märkvärdig och den ser ut ung. så här:

<a href="javascript:CreateExcel();">Excel</a>

<script language="javascript">
function CreateExcel()
{
frmExecute.action="/path/CreateTable.asp";
frmExecute.submit();
}
</script>

Det är möjligtvis nu som "knepet" kommer :) När man klickar på länken så skickas ju all info via http headern och den bearbetas i CreateTable.asp, men i browsern syns inte detta, utan för användaren ser det fortfarande ut som man befinner sig i ListCustomers.asp, bortsett från att en pop-up ruta kommer upp och frågar hur man vill spara filen.

Klickar man på Spara så är allt okay. Klickar man på "Cancel" så ser det okay ut fortfarande och man ser samma ListCustomer.asp. MEN - när man klickar på något som submittar sidan, en radioknapp t.ex, så kommer pop-up rutan upp igen och frågar om man vill spara. Exempel på en sån submit ser ut så här ungefär:

<input type="radio" name="rAscDesc" value="desc" onClick="frmExecute.submit();"> 

där frmExecute submittar tillbaka till ListCustomers.asp

<form action="/path/ListCustomers.asp" name="frmExecute" method="get">

Så där, det var väl all relevant info jag kunde komma på som jag hoppas belyser hur min sida fungear, och problemställningen. :) Om problemet går att lösa blir jag glad, eftersom jag inte har en susning. I annat fall får jag väl leva med det. Tack igen.

------------------
"Between stimulus and response is a pause wherein our ability to choose lies".

Medlem sedan dec. 19996 721 inlägg
#9

Om det är hela sanningen så beror problemet på att form-action fortsätter att vara createtable.asp, vilket är helt korrekt, men inte vad du vill.

function CreateExcel()
{
frmExecute.action="/path/CreateTable.asp";
frmExecute.submit();
frmExecute.action="/path/ListCustomers.asp";
}

[Redigerat av emission den 06 aug 2001]

Medlem sedan juni 2000504 inlägg
#10

hehehe.. sjutton !! Jag såg ditt inlägg igår innan jag skulle lägga mig, o var lite skeptisk till att den där lilla extra kodraden skulle vara tillräcklig... men så provade jag precis nyss, o det fungerade ju på en gång !!

Kanon Emission! Tusen tack! :)

------------------
"Between stimulus and response is a pause wherein our ability to choose lies".

Medlem sedan juni 2000504 inlägg
#11

Tack för hjälpen senast :) Litet problem uppstod dock tyvärr. Jag lade in

function CreateExcel()
{
frmExecute.action="/path/CreateTable.asp";
frmExecute.submit();
frmExecute.action="/path/ListCustomers.asp";
}

och det fungerade bra såtillvida att form-action inte längre var CreateTable.asp och problemet med att pop-up rutan dök up försvann. Men nu verkar det som om ListCustomers.asp istället "hänger kvar" i form-action eftersom den aldrig submittas. Detta innebär att alla <href> som inte samtidigt gör en submit inte fungerar (bl.a. de i meny-framen).

Mina försök:
Flytta submit så att den ligger sist i CreateExcel funktionen. Resultat: CreateTable.asp exekveras då aldrig. Två st. submits hjälper inte heller, då endast den senaste submitten skickas.

I vanliga fall hade jag satt en response.redirect eller javascript funktion i CreateTable.asp så att man därifrån kunde submitta ListCustomers.asp när man var klar i CreateTable.asp, men det verkar ju vara för sent som Emission sa:

Nej, varken Javascript eller ASP rår på detta. Det är webbläsaren som poppar upp rutan, och det är liksom för sent att ingripa då.

Men kanske någon vet om det finns ett helt annat sätt att angripa problemet? :) Det är så lätt att man själv börjar tänka i samma banor när man väl börjat o glömmer något som kanske är uppenbart.. Tack igen.

------------------
"Between stimulus and response is a pause wherein our ability to choose lies".

Medlem sedan dec. 19996 721 inlägg
#12

Men nu verkar det som om ListCustomers.asp istället "hänger kvar" i form-action eftersom den aldrig submittas. Detta innebär att alla <href> som inte samtidigt gör en submit inte fungerar (bl.a. de i meny-framen).

Va? href:arna har inget med formuläret att göra och ska inte kunna påverkas.
Aldrig submittas? Inte ens till createtable.asp?

------------------
-------------------
Att vara puckad är att dö en smula.
- Skywalker

Medlem sedan juni 2000504 inlägg
#13

Hej Emission

Jag vet inte varför det blev så, men det berodde inte på den kod som jag fick av dig, utan var så redan innan, upptäckte jag. (Den kod jag fick av dig hjälpte ju att ta bort pop-upen vid varje ny submit, så det var ju kanonbra, :)

Men av någon anledning fungerar inte en enda <a href> EFTER det att man valt o skapa Excelarket; dvs jag kan alltså submitta till CreateTable.asp eller klicka på nån href i menyn så länge jag inte väljer att klicka på länken som submittar till CreateTable.asp.

Eftersom problemet löser sig så fort man gör något som submittar sidan försökte jag komma på något som submittar om ListCustomers.asp automatiskt, antingen innan eller efter CreateTable.asp anropats, nu sist mha

<META HTTP-EQUIV="Refresh" URL="/path/ListCustomers.asp">
i CreateTable.asp

eller

frmExecute.action="/path/CreateTable.asp";
		frmExecute.submit();
		frmExecute.action="/path/ListCustomers.asp";
		location.reload("/path/ListCustomers.asp");

men det hjälper som sagt inte.. Jag vet inte riktigt vilken info som stannar i HTTP-headern om det nu är problemet.. för jag kan ju inte submitta om sidan.. ?

------------------
"Between stimulus and response is a pause wherein our ability to choose lies".

259 ms totalt · 4 externa anrop · v20260731065814-full.2f471f9e
122 ms — deklarationer (db)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)
122 ms — ändringar (db)