hoothin / UserScripts

Greasemonkey scripts ( Pagetual / Picviewer CE+ / DownloadAllContent ) 油猴腳本集 ユーザースクリプト集
https://greasyfork.org/users/8227-hoothin
3.05k stars 510 forks source link

[Pagetual]建議增加自定義預讀圖片功能 #322

Closed skofkyo closed 1 year ago

skofkyo commented 1 year ago

主要作用在漫畫網站,用代碼直接插入全部圖片的這部分preload()預讀不到,在觸發下一頁插入pageElement時還需要等待圖片載入,如果這時候又滾動滾輪由於頁面尚未增加多少高度又再次觸發下一頁,網站的傳輸速度不給力或是尖峰時段的話就會卡好久是在等待圖片載入,能自定義預讀圖片應該能改善這種情況。

舉例m.dm5.com 自定義預讀

let code = Array.from(doc.scripts).find(s => s.innerHTML.search(/newImgs/) > -1).innerHTML.slice(4, -1);
let imgSrcArr = eval(eval(code).replace('var', ''));
return imgSrcArr

返回一個圖片網址的陣列

preload()增加處理這個陣列的代碼

let code = self.curSiteRule.preloadImages;
if (code) {
    let imgSrcArr = new Function("doc", '"use strict";' + code)(doc);
    [].forEach.call(imgSrcArr, imgSrc => {
        let img = document.createElement('img');
        img.src = imgSrc;
        self.preloadDiv.appendChild(img);
    });
}
hoothin commented 1 year ago

感謝建議,加上了

skofkyo commented 1 year ago

有兩個站_GM_xmlhttpRequest預讀不到關鍵的script www.mangabz.com和xmanhua.com的手機版

在preload()添加了console.log('預讀\n',doc); 展開DOM樹沒看到有包含newImgs的script 是PC版的HTML

在requestDoc()添加console.log('翻頁\n',doc); 展開DOM樹有newImgs的script

差別是沒有傳送UA preload()需要補上'User-Agent': navigator.userAgent

hoothin commented 1 year ago

感謝反饋,preload只做了簡單的預讀,看來還是不夠。我合并一下程式碼

skofkyo commented 1 year ago

感謝更新!