Firefoxはiframeのドキュメントの名前に直接pdf名を設定しますが、chromeはそうではありません。あなたのiframe共有している場合の回避策については
、あなたの親ページと同じ起源は、使用することができます:
document.title = window.parent.document.title = "yourTitle";
彼らは同じ起源を共有していない場合は、あなたがを立ち往生しています。
window.open()
を含むクロスオリジンフレームであっても、実際にはハックがあり、「許可するポップアップ」許可のないサンドボックスのiframeでは機能しません。
function renameIframedPrint(title) {
var title = "myFile";
try {
// same-origin frame
document.title = window.parent.document.title = title;
print();
} catch (e) { // cross-origin frame
// we could instead grab the current content of the page
// but for the demo, location.href will do
var p = window.open(location.href);
p.onload = function() {
// no more frame so we don't care ;-)
p.document.title = "myFile";
// a bit more hack to close the popup once printed...
function closePopup() {
p.close();
}
if ('onafterprint' in p) {
// FF and IE
p.onafterprint = closePopup
} else {
// webkit don't support onafterprint
var mediaQueryList = p.matchMedia('print');
mediaQueryList.addListener(mqlListener);
function mqlListener(mql) {
if (!mql.matches) {
closePopup();
mediaQueryList.removeListener(mqlListener);
}
}
}
}
// we're ready
p.print();
};
}
External Live Demo
、
open()
以降は、スタック・スニペットのサンドボックス化さiframe内に動作しません。
印刷ダイアログでファイル名が必要なのはなぜですか? Windows(他のOSについてはわかりません)は、印刷ダイアログでファイル名を表示しません。 –
より良い顧客体験をお届けします。レポートをPDFとしてエクスポートすると、レポートの内容が時間とともに変化するため、デフォルトのファイル名にレポート番号と日付を含める必要があります。 Mac OS X(と私は他のOSを想定している)では、Chromeはデフォルトのファイル名をドキュメントのタイトルに設定します。たとえば、このページを印刷してPDFとして保存しようとすると、OS XのChromeはデフォルトのファイル名を「javascript - iframe_-Stack Overflow.pdfからChromeの印刷ダイアログのデフォルトファイル名を設定するにはどうすればよいですか」を設定します。 – mgig
'人々が私のレポートをエクスポートするとき' ...ああ、私は 'Chromeの印刷ダイアログのデフォルトのファイル名 'を誤って読んで、印刷ダイアログのファイル名を欲しかったのです。 –