Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537
是不是經常在網上遇到一些無法復制的文章?那么問題來了,有什么辦法可以繞開這種限制,將網頁內容輕松下載下來呢?
其實,既然是網頁內容,那么意味著HTML代碼是公開的,將相關文本復制下來根本不是問題,一起來看看要怎么做吧。
1
手機拍照識別
難度:●○○○○
效果:●●●●○
這是最簡單的一個辦法了,如今手機都自帶文字識別功能。首先用QQ或微信將要識別的網頁截取成圖片,發送到你的手機。然后打開手機“掃一掃”,選擇剛剛收到的網頁截圖,最后點擊“識別文字”就可以了。
一般來說,只要你的照片足夠清晰,字體基本標準,那么實現95%以上的識別率還是不成問題的。稍后通讀一下文章,將里面的識別錯誤簡單修正一下,就能直接生成文件使用了。
2
切換IE內核
難度:●○○○○
效果:●●●○○
很多小伙伴都忽略過這個辦法,如今IE已經被邊緣化,絕大多數瀏覽器都是WebKit內核,網頁設計師也是一樣,因此當你發現一個網站設置了禁止復制時,不妨將網址拖拽到IE瀏覽器里試一試,沒準會有意外驚喜!
順便說一句,如今很多國產瀏覽器都使用了雙內核,其中“兼容模式”就是IE核心,點擊切換試一試吧,和拷貝到IE里是一個效果!
3
查看源代碼
難度:●●●●○○
效果:●●●●○○
如果借助上一種方法“撿漏”不成功,那么就得動用一些“大招”了!這個方法基本可以搞定90%以上的網站,但操作起來稍微麻煩了一點。
1、在禁止復制的網頁上右擊鼠標,選擇“查看源代碼”:
2、將打開的源碼頁面下拉,找到帶有文字內容的區域。選中這個區域,將內容粘貼到Word文檔中:
3、 直接粘貼過來的內容會夾雜很多不必要的代碼,這時就是“查找與替換”大顯身手的時候了,將要刪除的代碼復制到查找框內,然后將替換為設空,最后點擊“全部替換”按鈕,直至代碼全部刪除為止:
4
保存網頁格式
難度:●●○○○○
效果:●●●●●○
這其實是上一種方法的“人性化”版,至少沒有看起來很頭疼的代碼頁了,而且它可以用在那些禁止鼠標右鍵的網頁中。
打開禁止復制的網頁,按快捷鍵Ctrl+S,在彈出的保存對話框中選擇“網頁,僅HTML”。雙擊保存好的網頁文件,這時你會發現原本無法復制的內容已經可以正常拷貝了。
5
打印法
難度:●●●●●○
效果:●●●●●○
這個方法只能用于WebKit內核瀏覽器(包括國產多數雙核瀏覽器),只要在禁止復制的網頁上按快捷鍵Ctrl+P,進入打印預覽模式,就能直接通過鼠標完成復制操作。
6
插件法
難度:●●●●●○
效果:●●●●●○
如果上面的這些方法都不奏效,或者操作步驟太繁瑣,這里還有一個終極大法,那就是借助插件完成。類似的插件有很多,比如Enable Copy,操作時只要將它安裝到瀏覽器上,遇到有復制限制的頁面點擊一下,就能輕松破解這些限制,具體的大家可以自行嘗試一下。
我們學習了 HTML 提供的原生拖放(drag & drop)后,是時候想一想這個東西可以用來作什么,可以在什么時候使用,使用的場景等等
場景分析
當我們在注冊成功一個賬戶時,一般網站會讓我們上傳我們的用戶頭像,或者在實名認證的時候會涉及到身份證圖片上傳到等,這時候我們可以使用input提供的file屬性進行選擇本地文件進行上傳。
我們再想一下,當在電腦端的情況下,當用戶打開文件選擇框時再尋找圖片對應的文件夾,再進行選取文件的時候是不是會有點麻煩呢?我們可不可以讓用戶找到圖片文件,直接引入實現上傳呢?答案是可以的。
怎么做
經過這些分析后,我們可以嘗試使用 HTML5 提供的拖拽,使得目標元素增加讀取文件功能,然后使用 ajax 實現圖片上傳。
談一談我們需要使用到的技術:
HTML5 拖拽事件
關于 Drag & Drop 拖拽事件,之前我寫過一篇專門介紹的文章,HTML5-拖拽,大家有興趣的話可以點擊鏈接查看,我在這里就不在多啰嗦了~下面直接出拖拽上傳的簡要代碼示例
var oDragWrap=document.body; //拖進 oDragWrap.addEventListener( "dragenter", function(e) { e.preventDefault(); }, false ); //拖離 oDragWrap.addEventListener( "dragleave", function(e) { dragleaveHandler(e); }, false ); //拖來拖去 , 一定要注意dragover事件一定要清除默認事件 //不然會無法觸發后面的drop事件 oDragWrap.addEventListener( "dragover", function(e) { e.preventDefault(); }, false ); //扔 oDragWrap.addEventListener( "drop", function(e) { dropHandler(e); }, false ); var dropHandler=function(e) { //將本地圖片拖拽到頁面中后要進行的處理都在這 };
獲取文件數據 HTML5 File API
File API 中的 FileReader 接口,作為 File API 的一部分,FileReader 專門用來讀取文件。我們在這里主要介紹一些 File API 中的 FileList 接口,它主要通過兩個途徑獲取本地文件列表,一是<input type="file"/>的表單形式,另一種則是e.dataTransfer.files拖拽事件傳遞的文件信息。
var fileList=e.dataTransfer.files;
使用 files 方法將會獲取到拖拽文件的數組形式的數據,每個文件占用一個數組的索引,如果索引不存在文件數據,將返回 Null。可以通過length屬性獲取文件的數量。
var fileNum=fileList.length;
拖拽上傳需要注意的是需要判斷兩個條件
// 檢測是否是拖拽文件到頁面的操作 if (fileList.length===0) { return; } // 檢測文件是不是圖片 if (fileList[0].type.indexOf("image")===-1) { return; }
下面我們看看結合之前的拖拽事件,來實現拖拽圖片并在頁面中預覽
var dropHandler=function(e) { e.preventDefault(); //獲取文件列表 var fileList=e.dataTransfer.files; //檢測是否是拖拽文件到頁面的操作 if (fileList.length==0) { return; } //檢測文件是不是圖片 if (fileList[0].type.indexOf("image")===-1) { return; } //實例化file reader對象 var reader=new FileReader(); var img=document.createElement("img"); reader.onload=function(e) { img.src=this.result; oDragWrap.appendChild(img); }; reader.readAsDataURL(fileList[0]); };
當完成以上操作后,相信你可以成功的完成了拖拽圖片預覽的操作。當你查看 img 標簽時會發現,img的src屬性是一個超長的文件二進制數據,當你需要很多這種的img元素時,建議將展示區域脫離文檔流,讓其絕對定位減少頁面的 reflow
AJAX 上傳圖片
既然已經獲取到拖拽到web頁面中的圖片數據了,下一步就是將其發送到服務器端。
總結
.進入打印預覽;
2.禁用Java腳本;
3.直接拖動到Word;
4.使用冰點下載器;
5.應用一鍵讀圖插件;
6.百度快照;
7.百度翻譯;
8.以“HTML”類型保存(Ctrl+S)。
以上幾個辦法可能會因不同的網站,不同的瀏覽器,不同的時期而有所不同,但確實可以解決很多問題。經親測,總會有一種是能用的。希望能幫到您。
*請認真填寫需求信息,我們會在24小時內與您取得聯系。