JS 캡 처
function getCloneDom (dom) {
// Create clone of element
let cloneDom = dom.cloneNode(true);
// Position element relatively within the
// body but still out of the viewport
let style = cloneDom.style;
style.position = 'relative';
style.top = window.innerHeight + 'px';
style.left = 0;
// Append clone to body and return the clone
document.body.appendChild(cloneDom);
return cloneDom;
}
2, 캡 처 과정, 우선 설치 의존 html 2 canvas
function screenShot (dom) {
let width = dom.clientWidth;
let height = dom.clientHeight;
let canvas = document.createElement('canvas');
let ctx = canvas.getContext('2d');
let scale = getPixelRatio(ctx) * 2;
canvas.width = width * scale;
canvas.height = height * scale;
ctx.scale(scale, scale);
canvas.style.width = width + 'px';
canvas.style.height = height + 'px';
let opts = {
scale: scale,
canvas: canvas,
width: width,
height: height,
useCORS: true,
logging: false
};
return html2canvas(dom, opts).then(canvas => {
let context = canvas.getContext('2d');
//
context.mozImageSmoothingEnabled = false;
context.webkitImageSmoothingEnabled = false;
context.msImageSmoothingEnabled = false;
context.imageSmoothingEnabled = false;
return Promise.resolve(canvas);
});
}
function getPixelRatio (context) {
let backingStore = context.backingStorePixelRatio ||
context.webkitBackingStorePixelRatio ||
context.mozBackingStorePixelRatio ||
context.msBackingStorePixelRatio ||
context.oBackingStorePixelRatio ||
context.backingStorePixelRatio || 1;
return (window.devicePixelRatio || 1) / backingStore;
}
3. 방법 호출
async function doScreenShot {
const cloneDom = getCloneDom(dom);
const canvas = await screenShot(cloneDom);
document.body.removeChild(cloneDom);
}
4. 저 버 전 브 라 우 저 호 환
if (!HTMLCanvasElement.prototype.toBlob) {
Object.defineProperty(HTMLCanvasElement.prototype, 'toBlob', {
value: function (callback, type, quality) {
const binStr = atob(this.toDataURL(type, quality).split(',')[1]);
const len = binStr.length;
const arr = new Uint8Array(len);
for (var i = 0; i < len; i++) {
arr[i] = binStr.charCodeAt(i);
}
callback(new Blob([arr], {type: type || 'image/png'}));
}
});
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
전단 자동화 워 크 플 로 의 hooks예 를 들 어 우 리 는 git commt 전에 eslint 코드 검사, npm install 전에 프로젝트 의존 도 를 검사 하고 싶 습 니 다.전형 적 인 상황 에서 각종 도 구 는 특정한 동작 이 발생 할 때 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.