2008-10-21 44 views
6

我有一個ASP.Net應用程序,根據需要功能,用戶希望能夠截圖。雖然我知道這可以模擬,但有一種方法可以獲取URL(或當前呈現的頁面),並將其轉換爲可存儲在服務器上的映像,這真是太棒了。使用ASP.Net,是否有一種編程方式來截取瀏覽器內容?

這是瘋了嗎?有沒有辦法做到這一點?如果是這樣,任何參考?

+0

這並不瘋狂,它是邪惡和陰險。我不想讓你知道我在瀏覽什麼! – 2008-10-21 02:31:11

+0

我認爲你應該接受phyzome答案,並創建另一個更具體的問題(你的瀏覽器目標等等),減去ASP.NET標籤。 – Salamander2007 2008-10-21 03:14:24

回答

6

我現在可以告訴你,從瀏覽器內部沒有辦法做到這一點,也不應該有。想象一下你的頁面嵌入了一個iframe中的GMail。然後,您可以竊取該人的GMail收件箱的屏幕截圖!

這可以通過讓瀏覽器「禁用」所有內嵌框架和嵌入來違反跨域限制而變得安全。

你當然可以寫一個擴展來做到這一點,但要注意上面列出的安全考慮。

更新:可以使用畫布效用函數來獲得一個頁面的截圖上同一產地爲你的代碼。甚至還有一個lib,允許你這樣做:http://experiments.hertzen.com/jsfeedback/

您可以在這裏找到其他可能的答案:Using HTML5/Canvas/JavaScript to take screenshots

3

Browsershots有一個XML-RPC接口和可用的源代碼(在Python中)。

1

你可以嘗試的Internet Explorer瀏覽器插件一樣IE7 Pro它允許您保存當前的屏幕截圖站點到磁盤上的文件。我敢肯定,FireFox也有類似的插件。

1

如果你想做一些像你所描述的。您需要調用打印IE輸出的外部進程,如here所述。

1

你爲什麼不採取另一種方法?

如果您需要用戶可以再次查看相同的內容,那麼這聽起來像是您的應用程序的業務需求,因此您應該將其構建到您的應用程序中。

構造URL,以便當同一個用戶(假設你有會話和應用程序向不同的用戶顯示不同的東西)訪問同一個URL時,他們總是看到相同的東西。然後,他們可以在本地爲URL添加書籤,或者甚至可以將應用程序功能保存在用戶配置文件中。

其中一部分意味着製作「乾淨的網址」,例如site.com/view/whatever-information-needed-here。

如果你正在做基於時間的數據,它隨着年齡的增長而變化,可能有幾種可能的方法。

  • 如果您的數據沒有定期更改,那麼您可以始終使「當前」頁面,例如site.com/view/2008-10-20(根據情況添加小時/分鐘/秒)。
  • 如果刷新和/或更新更頻繁,請將「當前」頁面設置爲site.com/view ..但允許指定之後的確切時間。在這種情況下,您必須具有「鏈接到此頁面」類型的功能,該功能將鏈接到具有完整日期/時間的永久URL。在這裏尋找谷歌地圖的靈感 - 如果你滾動地圖,你總是可以點擊「鏈接到這裏」,它會提供一個鏈接,包括GPS座標,地圖上的對象等。在這種情況下,它不是非常友好的網址,但它確實工作得很好。 :)
相關問題