ウィジェット(Webページ)でのページショットの実装
2406 ワード
最近、小さなプログラムでページのスクリーンショットを実現する必要があるという需要があり、私は最初は公式に提供された拡張コンポーネントwxml-to-canvasを使用することを考えていましたが、実際には効果が悪く、まず実際のページを切り取るのではなく、
じつコード
ページの部分は
ページに挿入
スクリーンショットが必要なdomノードにrefプロパティを追加
wxml
とwxss
に送らなければなりません.そして彼がサポートできる効果も少なく、需要の中で少し複雑な効果を満たすことはできません.最終的には、web-viewでロードされたページでhtml2canvasを使用して機能を実現することにしました.じつコード
ページの部分は
vue
を使って、まずhtml2canvas
をインストールする必要がありますnpm install html2canvas
ページに挿入
import html2canvas from 'html2canvas';
スクリーンショットが必要なdomノードにrefプロパティを追加
...
document.body.scrollTop = 0;
// ,
html2canvas(this.$refs.page, {
allowTaint: false,
useCORS: true,
width: document.body.scrollWidth,
height: document.body.scrollHeight
//
}).then(canvas => {
this.savedPic = canvas.toDataURL('images/png')
//
...
// a
//
let a = document.createElement('a'),
blob = this.dataURLToBlob(canvas.toDataURL('images/png'));
a.setAttribute('href', URL.createObjectURL(blob));
a.setAttribute('download', 'pic.png');
document.body.appendChild(a);
a.click();
URL.revokeObjectURL(blob);
document.body.removeChild(a);
});
...
Webページはオリジナルのウィジェットではないので、 されたスクリーンショットを できないなど、 の があります.モバイル や でもアナログaタグのクリックで をダウンロードすることはサポートされていないが、 には されたスクリーンショットを し、ユーザーに を く すように すことで を する しか できず、ユーザー は うくなるが、スクリーンショット がwxml-to-canvas
よりも すぎることを すると、まだ け れられる.
にhtml2canvas
の について べると, に されていないスタイルはシャドウや であり,その は に されていることが かった.Webページのピクチャは、ローカルピクチャまたはドメイン ネットワークピクチャをサポートする があります. を する では、 ではなくimg
のラベルを することをお めします.img
のラベルは、 よりはるかに が いことを しています.