0

以下のコードで生成されたポップアップボックスを閉じるまたは再読み込みする方法を見つけるのに問題があります。私が避けたいのは、ユーザーがウィンドウを手動で閉じずに別の「ヒント」を選択した場合、新しいヒントが既存のテキストに追加されるだけです。望ましい結果は次のいずれかになります。

  1. ウィンドウからフォーカスが失われるとウィンドウが閉じ、リセットされます。
  2. 新しいヒントを貼り付けるときにウィンドウを「更新」できます。

私は広範囲にわたる調査を行い、無駄に多くの異なるアプローチを試みました。

私は厳しい政府環境で作業しており、jQueryなどのサードパーティツールのインストールについて非常に精通しているため、他の方法で納得できるまで、ここで基本的な作業を行うことに固執しています。また、MOSTの部分では、部門内のほとんどのユーザーがIE8以降を使用しますが、(優先度は低くなりますが)特定のブラウザーに限定されないソリューションを開発したいと思います。

たぶん誰かが私がしていることをするためのより良い方法を提案することができますか、それともそれはあまりにも多くを求めていますか?;-) 前もって感謝します。

function PromptTip(title, message)
{
var HTMLTitle = "<p style='text-align:center'><b>" + title + "</b></p>"
var HTMLMsg = "<p style='text-align:center'>" + message + "</p>"
win = window.open("","Tip","width=320,height=210,scrollbars=no,resizable=no,titlebar=no");
win.moveTo(screen.width/2-160,screen.height/2-105)
win.document.writeln("<html><head><title>Prompt Tip</title></head><body onfocusout='javascript:close()'>");
win.document.writeln(HTMLTitle);
win.document.writeln(HTMLMsg);
win.document.writeln("<p style='text-align:center'><a href='javascript:close()'>close</a></p></body></html>");
}
4

2 に答える 2

1

window.openとwindow.document.writelnを使用しないことを強くお勧めします。window.openの代わりに、マークアップを動的に作成して(またはマークアップの非表示のスニペットを表示して)、すべての最新のダイアログ/モーダルJSライブラリと同じように絶対位置を使用することをお勧めします。win.document.writelnの代わりに、document.createElementを使用したDOM作成Node.appendChild(または任意の数のDOM挿入メソッド)を使用した挿入、またはマークアップテンプレートアプローチを使用することをお勧めします。

そうは言っても、ツールチップがクリックされるたびに、コードを変更してiframeの本体のinnerHTML全体を置き換えることができます。

例: http: //jsfiddle.net/ruJqj/

function PromptTip(title, message) {
    var HTMLTitle = "<p style='text-align:center'><b>" + title + "</b></p>"
    var HTMLMsg = "<p style='text-align:center'>" + message + "</p>"
    win = window.open("", "Tip", "width=320,height=210,scrollbars=no,resizable=no,titlebar=no");
    win.moveTo(screen.width / 2 - 160, screen.height / 2 - 105)

    win.document.body.innerHTML = HTMLTitle + HTMLMsg + "<p style='text-align:center'><a href='javascript:close()'>close</a></p>";
}​
于 2012-08-24T04:13:16.480 に答える
0

私があなたの質問を理解した場合、これが役立つかもしれません、あなたはこの行を変更します:

    win.document.writeln("<html><head><title>Prompt Tip</title></head><body onfocusout='javascript:close()'>");

これについて:

    win.document.writeln("<html><head><title>Prompt Tip</title></head><body onBlur='javascript:close()'>");

このイベントを使用する必要があります:onBlur ='javascript:close()'

* IE 9でテストしたところ、正常に動作しています

于 2012-08-24T04:06:37.700 に答える