当サイトには、会員プロフィールを印刷できる機能があります。これが機能する方法は、onsubmit を介して JavaScript 関数をボタンにアタッチすることです。javascript 関数は、window.open を使用して特別なモードでページを再度開き、ページの印刷用バージョンを再表示します。
この機能は 2008 年頃から導入されており、すべてのブラウザーで動作します。約 1 週間ほど前を除いて、Chrome で動作しなくなりました。Chrome では、開いているウィンドウが開くのに、別の空白のウィンドウが一時的に開き、その後すべてが閉じます。
この問題の議論を検索したところ、正確な問題を見つけることができませんでしたが、onsubmit に「return false」を追加する必要があるという記述が見つかりました。それを追加しようとしましたが、役に立ちませんでした。
onsubmit は次のようになります。
<button onclick="PrintEmailSubmit('print');">Print Profile</button>
ウィンドウを開くコードは次のようになります。
window.open('print-email-profile.php?mode=' + mode,'','width=' + width + ',height=' + height + ',scrollbars=yes,location=0,menubar=1,status=0,toolbar=0')
見る必要はありませんが、PrintEmailSubmit() 関数全体を次に示します。
/*
* called by view-profile.php
*/
function PrintEmailSubmit(mode)
{
var width;
var height;
switch(mode)
{
case 'print':
width = 850;
height = 1000;
break;
case 'email':
width = 400;
height = 120;
break;
default:
alert('Error: invalid calling sequence -- should not happen!');
exit;
}
window.open('print-email-profile.php?mode=' + mode,'','width=' + width + ',height=' + height + ',scrollbars=yes,location=0,menubar=1,status=0,toolbar=0');
}
そして最後に、これが機能する理由は、ページの特別なバージョンの body タグに次のものが追加されていることです。
<body onload="window.print();window.close();">
上記のとおり、機能は引き続き IE と Firefox で動作します。Chromeだけがこの問題を抱えています。
何か案は?