2010-05-14 16 views
1

我希望我的用戶能夠截圖的網頁(或我定義的截圖大小),然後讓他們把它保存到他們的計算機。良好的JS庫採取屏幕截圖

有誰知道一個好的JS庫,允許你這樣做嗎?

我知道瀏覽器中有插件,但我想要一些純JS,這樣用戶只需點擊一個按鈕和一個「另存爲」鏈接,就可以看到他們正在查看的屏幕截圖。

感謝您的幫助。

/fmsf

+2

不可能,沒有跨瀏覽器的解決方案來創建截圖與純JavaScript(假設有一個純JavaScript解決方案的任何瀏覽器)。 – Wolph 2010-05-14 11:56:07

回答

4

瀏覽器不公開的API,允許這樣的網頁,所以沒有辦法做到這一點使用普通的JavaScript在網頁上運行。

實現此目的的唯一方法是在服務器上準備好屏幕抓圖,並指向正確的下載鏈接。

+0

是的,我們已經這樣做了,但是它給我們的服務器帶來了很大的負擔,使截屏意味着渲染頁面並加載對象系統。這就是爲什麼我想避免它,並使其發生在客戶端 – fmsf 2010-05-14 13:01:45

+0

也許這曾經是不可能的,但它不再是了。看看這個問題http://stackoverflow.com/questions/4912092/using-html5-canvas-javascript-to-take-screenshots – 2013-01-04 22:41:36

3

這不能在JavaScript中完成。在當前文檔/域之外拍攝屏幕截圖是一個潛在的安全問題,是不可能的。查看我的關於getting the pixel colour from the current mouse position的問題了解更多背景。

如果您需要將屏幕截圖傳輸到服務器上,請查看與您的網站交互的外部應用程序。例如,開源bug跟蹤器Mantis有一個適用於Windows的屏幕截圖應用程序。

如果屏幕截圖和文件保存都在客戶端計算機上進行,請檢查Firefox的Fireshot。它似乎沒有提供任何交互功能與預定義的網站,但可能是您的用戶的正確工具。

+2

+1。 Mozilla已經使用['.drawWindow()'](https://developer.mozilla.org/en/Drawing_Graphics_with_Canvas#section_9)擴展了畫布,但它僅適用於以完全權限運行的代碼,這是出於您在帖子中提到的安全原因。然而,[源代碼](http://mxr.mozilla.org/mozilla/source/content/canvas/src/nsCanvasRenderingContext2D.cpp#2352)暗示這些安全問題可能會在未來得到解決。 – 2010-05-14 12:10:07

+0

乾杯@安迪,很棒的信息! – 2010-05-14 12:12:14