現在HTML,javascriptを使って印刷機能を実装しています。
質問があるのですが、
結論から言うと、
印刷ボタンを押下する度にダイアログが開く回数が増えてしまいます。どういった対応をすればいいでしょうか?
またイベントの複数登録をさせないためにonメソッド→oneメソッドに変えると印刷ボタンが1度しか機能しないブラウザが出てきます。
現状のコードは以下です。
javascript
1$("body .btnPrint").on("click",function(){ 2 window.print(); 3 return false; 4});
デベロッパーツールで見るとイベントがボタンを押下する度に登録されていたので、
oneメソッドに変えたところ、
・chrome(60.0.3112.101)では直り
・Firefox(46.0.1)では1度印刷ダイアログを開くと2度とボタンを押しても開かなくなりました。デグレました。
このような状態で一概にoneメソッドで直るとは言えず、どうすればいいか困っています。
もし何かわかる方がいらっしゃれば教えていただければと思います。
追記
すいません。一部誤った情報を流してしまっていました。
上記コードの外側でonメソッドが使われていました。
以下のような構造になっていました。申し訳ありません。
javascript
1$(window).on("load resize",function(){ 2if(flg){ 3flg = false; 4settimeout(function(){ 5 : 6 : 7 8$("body .btnPrint").on("click",function(){ 9 window.print(); 10 return false; 11 }); 12},600); 13} 14}); 15
flgがどういう意図で使われているのかわかりませんが、このような構造になっており、
settimeoutの中にいろいろなメソッドがある状態です。
またHTMLは以下の通りです。
HTML
1<a class="btnPrint" href="#"><span>印刷</span></a>
回答3件
あなたの回答
tips
プレビュー