iPadで使用する小さな「pdf」ビューアーがあります。HTML での PDF のレンダリングは非常に遅いことがわかったので、PNG ソリューションを試してみました。これは Web アプリケーションであり、すべてがピクセル パーフェクトであるため、ズームは無効になっています。
私のアイデアは、実際には画像がどんなに大きくてもカプセル化する div である一種の「ウィンドウ」を作成することでした。ここまでは順調ですね。
しかし、ピンチのピンチアウトをエミュレートするために Hammer を試すことにしたところ、奇妙なことが起こりました。ピンチしたり外したりすると、ページが揺れるようで何もできません...しかし、イベントハンドラーにアラート(はい、アラート)を追加すると、期待どおりに機能します。
これはコードです:
(function($){
var pdfViewer = {
pdf: {},
currentPage : 1,
currentZoom : 200,
defaultZoom : 200,
intervalZoom : 30,
el : {
pdfWindow : $('.pdf-window'),
image : $('.pdf-window').find('img')
},
init : function(){
this.bindEvents();
},
bindEvents : function(){
var self = this;
this.el.pdfWindow.hammer().on('pinchin',function(e){
self.currentZoom = self.currentZoom - self.intervalZoom;
self.updateZoom.apply(self);
});
this.el.pdfWindow.hammer().on('pinchout',function(e){
self.currentZoom = self.currentZoom + self.intervalZoom;
self.updateZoom.apply(self);
});
},
updateZoom : function(){
this.el.image.attr('width',this.currentZoom + '%');
}
};
pdfViewer.init();
})(jQuery);
これはクリーンなデモです。iOS デバイスで試す必要があります...何が間違っている可能性がありますか?