簡體   English   中英

新打開的窗口打開但立即關閉

[英]New opened window opens but closes immediately

我正在嘗試使用javascript從FTP下載文件,為此我創建了以下主題:

是否可以使用Javascript從FTP下載文件?

從那里我了解到我可以使用window.open('ftp://xyz.org/file.zip'); 下載文件。 它會打開一個瀏覽器新窗口,但窗口會立即關閉。

我怎么能強迫它保持開放?

實際上我在Silverlight應用程序中做了所有這些:

這是代碼:

HtmlPage.Window.Eval("window.open('" + url+ "', 'Download', 'height=500,width=800,top=10,left=10');");

我也嘗試過這個,

string targetFeatures = "height=500,width=800,top=10,left=10";
HtmlPage.Window.Navigate(new Uri(url), "_blank", targetFeatures);

但兩者結果相同:它打開一個窗口,並立即關閉它。 我只看到它的一小部分!

我知道這不能回答你的問題,我相信你知道這一切。 我正在回答更多,因為我沒有經常提到這一點。 :)

Silverlight對客戶端交互的支持非常有限。 Javascript是一個墊片,在我看來過度使用試圖繞過Silverlight架構的東西。 微軟很容易在Silverlight中包含FTP支持,但出於某種原因將其排除在外。

但是,Silverlight對Web服務交互有很大的支持。 因此,獲取文件的推薦方法是調用將為您進行FTP傳輸的Web服務,然后通過Web服務將內容發送到Silverlight應用程序。 可能甚至在Web服務端處理任何業務邏輯等。

就像我說的,我懷疑你的要求是不使用網絡服務(最有可能將帶寬成本傳遞給用戶)。 但是,對於您所選擇的解決方案,了解更多有關您的業務問題而非您的技術問題會很有趣。

它關閉,因為它觸發文件下載。 你可以打開兩個窗口 - 一個用於消息,一個用於下載文件,但我知道用戶會知道它正在下載...

如果我是你,我會打開一個頁面,其中包含您想要向用戶顯示的任何視覺/ UI內容,並且要么具有重定向到下載URL的META標記,要么具有要啟動的javascript blurb表示下載。 這樣,您的窗口將保持打開狀態,但下載仍將自動啟動。

保持開放使用

var test = window.open();
test.location = 'ftp://openbsd.org.ar/pub/OpenBSD/2.0/arc/kernels/bsd.ecoff';

並且不打開任何窗口使用

window.location = 'ftp://openbsd.org.ar/pub/OpenBSD/2.0/arc/kernels/bsd.ecoff';

或建立正常的鏈接

我有完全相同的問題,Silverlight打開一個下載文件的新窗口會短暫地閃爍一個空白窗口,它會在沒有文件下載的情況下再次消失。

這似乎發生在IE 8(不是9及更高版本)中,可以通過進入工具 - > Internet選項 - >安全性然后單擊自定義級別...(對於您的站點所在的任何區域)來修復並轉到下載 - >自動提示文件下載並確保已啟用(我也在下面啟用了文件下載)。 IE 9+似乎沒有這種自動提示文件下載設置。

另一種解決方法是不在新窗口中打開,如果目標URL立即下載文件,它將不會更改當前窗口,因此UX沒有區別:

HtmlPage.Window.Navigate(new Uri("\download.ashx?fileid=12345"));

請記住,瀏覽器並不意味着“顯示”(無論如何)視覺上的FTP協議,並不是所有的瀏覽器都會支持它。 如果您想允許用戶下載某些內容,請考慮使用普通的http://協議,並按照其他人的建議正常打開一個窗口。

如果您確實需要通過FTP托管下載,請考慮后端攝取(和緩存)文件並通過http將其返回給用戶

在瀏覽器方面沒有任何東西需要解析,因此它會關閉。 如果你想讓頁面打開,你就會有些臟東西。 就像創建一個html(或php)頁面並提供你希望用戶看到的內容一樣,然后使用一個隱藏的i-frame來調用FTP內容。

這樣,您的用戶將看到您希望他們看到的內容,並且正在下載該文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM