ホームページ >ウェブフロントエンド >jsチュートリアル >window.open はポストモードで新しいウィンドウにコンテンツを送信します_JavaScript スキル

window.open はポストモードで新しいウィンドウにコンテンツを送信します_JavaScript スキル

WBOY
WBOYオリジナル
2016-05-16 17:45:281191ブラウズ
最初の方法
私は最近 Web プロジェクトに取り組んでいて、ページ間でパラメーターを渡す必要がある関数に遭遇しました。これには、現在のページのコンテンツを新しく開いたサブフォームに移動する必要がありました。 ID を渡して、新しいウィンドウでデータベースの内容を読み取ることです。それほど面倒ではありませんが、コンテンツがデータベースに保存されておらず、ドラフト状態のみの場合は実装できず、ユーザーはバグだと思うことがよくあります。 get メソッドを使用して転送し、必要なすべてのコンテンツをシリアル化してから URL 経由で転送することを検討してください。これは非常に肥大化しており、get によって転送されるコンテンツの長さは制限されています。そこで、post メソッドを使用して配信することを考えました。問題は、open メソッドではリクエスト メソッドを設定できないことです。通常、Web ページへの投稿はフォームを通じて実装されます。フォームの送信メソッドのみをシミュレートする場合、フォームのプロパティを設定できる open メソッドのパラメーターは使用できません。最後に、フォームのターゲットを open の name パラメータと同じ値に設定し、ブラウザによる自動認識を通じてコン​​テンツを新しいウィンドウに投稿する方法を見つけました。

さらに興味深いのは、ヘルプ ドキュメントを表示した後、フォームの submit メソッドを呼び出して onsubmit イベントを直接トリガーできないことです。手動でトリガーしないと、開かずにページが更新されるだけになります。新しいウィンドウ。コードではパラメータの内容は 1 つだけ渡されますが、実際には複数のパラメータを渡すことができます。
具体的なコードは次のとおりです:
コードをコピーします コードは次のとおりです:

<script> <br>function openPostWindow(url, data, name) <br>{ <br>var tempForm = document.createElement("form"); <br>tempForm.id="tempForm1"; tempForm.method="post "; <br>tempForm.action=url; <br>var hideInput = document.createElement("input"); "; <br>hideInput .name= "content" <br>hideInput.value= data; <br>tempForm.appendChild(hideInput); <br>tempForm.attachEvent("onsubmit",function(){ openWindow(name) ; }); <br>document.body.appendChild("onsubmit"); <br>document.body.removeChild(tempForm); 🎜>} <br> function openWindow(name) <br>{ <br>window.open('about:blank',name,'height=400, width=400, top=0, left=0, toolsbar=yes 、menubar=yes、スクロールバー =yes、resizable=yes、location=yes、status=yes'); <br>} <br></script>



2 番目の方法



コードをコピー
コードは次のとおりです。 function openWindowWithPost(url,name) ,keys,values) { var newWindow = window.open(url, name); if (!newWindow)
var html = ""; html = "
"; && 値)
{
html = ""; = " ".toString() .replace(/^. ?*|\(?=/)|*. ?$/gi, "");
newWindow.document.write(html);
return newWindow;
}


2 番目のメソッドのテスト中に、カレンダーのポップアップ ボックスと競合することが判明しました。サブページにはカレンダー ポップアップ ボックスがあり、カレンダー ボックスをクリックするとページが継続的に更新されます。もちろん、使用しているカレンダーボックスに問題がある可能性もあります。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。