Chromeバージョンアップ後、jquery.PrintAreaで印刷できなくなった
私が以前開発していたWebアプリには印刷機能があったのですが、先日の2014/7/17にChromeが36.0.1985.125へバージョンアップした途端、印刷ができなくなりました。
調べてみると、印刷に利用していたjquery.PrintAreaを最新のバージョン2.4.0にすると印刷できるようになるみたい・・。
jquery.PrintAreaは、2.3.3⇒2.4.0へのバージョンアップの際、以下のissueに対応している。そのおかげで直ってるみたい。
https://github.com/RitsC/PrintArea/issues/15
このissueは、IE11でiframeモードでの印刷ができない、というものだったが。
このissueでは、以下の変更が行われているけど、これでどうして印刷ができるようになるのだろう?
- printメソッドの呼び出しをsetTimeoutで遅延実行するようにしている
setTimeout( function () { PrintArea.print( PrintAreaWindow ); }, 1000 );
- iframeのスタイルを変更(left:0pxをright:0pxに変更している)
var iframeStyle = 'border:0;position:absolute;width:0px;height:0px;left:0px;top:0px;';
↓
var iframeStyle = 'border:0;position:absolute;width:0px;height:0px;right:0px;top:0px;';
- iframeのsrc属性の値を変更
$(iframe).attr({ style: iframeStyle, id: frameId, src: "" });
↓
$(iframe).attr({ style: iframeStyle, id: frameId, src: "#" + new Date().getTime() });
とりあえずPrintAreaのバージョンアップで対応できたけど、正直、何が原因で印刷できなくなったのか、この修正でなんで直るのか分からなくて、かなりモヤモヤしている。
Chromeのバージョンアップで、ここまでアプリに影響が発生したのは初めて。
Chromeのラピッドリリースは利用ユーザにはメリットがあるけど、開発者にとっては大変だなと実感した。
Beta版でリリース前に動作確認しておかないといけないなぁ。