[英]New opened window opens but closes immediately
我正在嘗試使用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.