0

私は興味深い問題に直面しています:

現在、一連のページの最後に「印刷」というボタンがあり、ユーザーは情報を入力したり、選択したり、独自の結果を得ることができます。

このボタンを押すと、アプリケーションの状態を表すデータがJQueryを介して送信されます.post()。ターゲットスクリプトがそのデータを処理し、一意のIDに対してデータベースに格納すると、そのIDが成功ハンドラーに返送されます。次に、IDは成功ハンドラーで使用され、送信されたデータをプルダウンして印刷可能な方法で表示する新しいウィンドウを開きます。

$.post("api/PrintJob.php", applicationStateJSON, function(response)
{
    window.open("print/?job=" + response.token);

}, "json");

window.open()呼び出しはクリックハンドラー内に直接行われないため、ポップアップは当然のことながらブロックされます。

window.location.href = ?;ユーザーが一歩戻って変更を加えたい場合などに備えて、アプリケーションの状態を維持する必要があるため、単純に使用することはできません。

現在、私の唯一の解決策は、成功ハンドラー内に2番目のボタンを表示し、それによって印刷ウィンドウを起動することです。ただし、現在の感触を維持し、新しいタブ/ウィンドウ/ポップアップ/可能であれば、ブロックされることなくウィンドウを開いておくことが望ましいです。

たぶん、最初に[印刷]をクリックしたときにポップアップを空で起動し、データがデータベースに到達したときにそれを再ロードする方法はありますか?

どんなアイデアでも大歓迎です。

4

2 に答える 2

1

シナリオを考えると、オプションとして、2番目のボタンを非表示にし、トークンが戻ってきたらクリックをトリガーすることができます。

var token;

$('#hiddenbutton').click(function(){
     window.open("print/?job=" + token);
 }):

$.post("api/PrintJob.php", applicationStateJSON, function(response)
{
    token = response.token;
    $('#hiddenbutton').trigger('click');
}, "json");
于 2012-12-11T06:04:24.373 に答える
1

私の提案は、最初のクリックでウィンドウを開き、次に新しく開いたウィンドウから投稿を行うことです。新しく開いたウィンドウに投稿の応答が表示されます。この応答は、JS/JQueryを使用して新しいウィンドウをペイントするために使用できます。

于 2012-12-11T06:07:12.670 に答える