3

何? ターゲット属性(XHTML検証)を使用せずに、新しいウィンドウへのPOSTリクエスト(フォームデータである必要はありません)を実行できるようにしたいと思います。

なんで? ユーザーが印刷するエントリの数を選択するWebアプリ(jQueryを使用)があります。各エントリIDは、全体の印刷可能なバージョンを表示する処理ページに送信する必要があります。ユーザーをWebアプリから離れて印刷するように指示したくありません。また、エントリIDの数が多すぎてURLに収まらない可能性があるため、ポップアップでgetを使用できません。

私はグーグルでいくつかのフォーラムを読んだことがありますが、ほとんどの人はターゲット属性を直接提案するか、JavaScriptを使用して挿入することを提案しているようです。私はこれら両方の解決策を避けたいと思っていました。

これも可能ですか?もしそうなら、どのように?

前もって感謝します :)

4

6 に答える 6

3

これがtarget属性の目的です。「_blank」に設定すると、新しいウィンドウが開きます。マークアップを有効にしたい場合(ポイントは何ですか?ユーザーがマークアップの有効性についてあまり気にしないことを保証します!)、Javascriptを使用してページの読み込み時にターゲットを設定します...

window.onload = function() {
  document.forms[0].target = '_blank';
}

他に方法はありません。

于 2010-02-12T16:10:45.917 に答える
1

Javascriptで、フォームの送信をインターセプトし、2番目のフォームに必要な値を非表示のフィールドのみに入力して、代わりにそのフォームを送信します。

于 2010-02-12T17:08:19.293 に答える
0

現在のページの上部をターゲットにして、現在使用されているフレームセットから抜け出すには<a href="page.htm" target="_top">、HTMLで使用します。Javascriptでは、以下を使用します。

top.location.href = 'page.htm';

現在のページまたはフレームをターゲットにするには<a href="page.htm" target="_self">、HTMLで使用できます。Javascriptでは、以下を使用します。

self.location.href = 'page.htm';

親フレームをターゲットにするには<a href="page.htm" target="_parent">、HTMLで使用できます。Javascriptでは、以下を使用します。

parent.location.href = 'page.htm';

フレームセット内の特定のフレームをターゲットにするには<a href="page.htm" target="thatframe">、HTMLで使用できます。Javascriptでは、以下を使用します。

top.frames['thatframe'].location.href = 'page.htm';

現在のページ内の特定のiframeをターゲットにするには<a href="page.htm" target="thatframe">、HTMLで使用できます。Javascriptでは、以下を使用します。

self.frames['thatframe'].location.href = 'page.htm'; 
于 2010-02-12T15:34:28.123 に答える
0

要素の属性targetは、<form>XHTML1.0トランジショナルで有効です。

XHTML1.1または1.0Strictを使用している場合、<iframe>そもそもは有効なタグではありません。

于 2010-02-12T16:07:12.990 に答える
0

Javascript window.openを使用して新しいウィンドウを「ポップ」し、URLでGETパラメーターを使用して引数を渡すことができます...しかしIMOは、遷移Doctypeでターゲット属性を使用するよりも悪いです。

それを行うための最良の方法は、DOMでその場で作成され、AJAX呼び出しによってそれ自体にデータを取り込む「偽の」新しいウィンドウです。このようにして、(新しいウィンドウを開くことによって)ユーザーエクスペリエンスを「壊す」ことはありません。

于 2010-02-12T16:14:37.873 に答える
0

呼び出し元のページから新しいウィンドウを開く前に、新しいウィンドウを開くページに非表示のフィールド(entryIdsと呼びます)を設定すると、開いたページで次のように参照できます。

$(function() {
    var $opener = $(window.opener.document);
    var entryIds = $opener.find("#entryIds").val();
    // do something with the ids
});  

ここでの欠点は、JavaScriptを介してエントリの詳細を表示する必要があることです。フォーム投稿を行う必要はまったくありません。

気が狂ったように感じる場合は、新しいウィンドウを開く前に、オープナーページのセッションまたはCookie(Webサービス呼び出しを介して)にエントリIDを設定し、開いたページでセッションを取得して、代わりに、サーバー側でページを印刷してください。

于 2010-02-12T17:33:58.520 に答える