Chromeバージョンアップ後、jquery.PrintAreaで印刷できなくなった

f:id:qualitas:20140724235911p:plain

私が以前開発していた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版でリリース前に動作確認しておかないといけないなぁ。