2

新しいウィンドウを開き、jQuery/JavaScript を使用して HTML を書き込む方法について調査してきましたが、次のようにするのが適切な方法のようです。

新しいウィンドウの変数を作成します

var w = window.open();

新しいデータを挿入し、変数を操作します

$(w.document.body).html(data);

そして私にとって、それは完全に理にかなっています。ただし、これを自分のスクリプト ("data" は HTML のホルダー) に組み込もうとすると、新しいウィンドウは開きません。 ..

function newmore(str) {
    var identifier = 4;
    //get the history
    $.post("ajaxQuery.php", {
        identifier : identifier,
        vanid : str
    },
    //ajax query 
    function(data) {
        //response is here
        var w = window.open();
        $(w.document.body).html(data);
    });//end ajax                
}

何か案は?

PSコンソールにエラーはないようです

4

3 に答える 3

9

新しいウィンドウは、ほとんどのブラウザーに組み込まれているポップアップ ブロッカーによってブロックされている可能性があります。ユーザー アクション (キー、クリック) の直接的な結果として新しいウィンドウを作成する場合、通常、ブラウザーはそれをブロックしません。ただし、後で (ajax 呼び出しが完了した後など) まで待つと、ブロックされ、おそらくそれがあなたのケースで起こっていることです。

したがって、修正は通常、ユーザー イベントに直接応答してウィンドウを作成し (ajax 呼び出しが完了するまで待たずに)、ウィンドウ ハンドルを変数に保持し、後で ajax 呼び出しの後にウィンドウにコンテンツを配置することです。完了します。

function newmore(str){
    var identifier = 4;
    // create window immediately so it won't be blocked by popup blocker
    var w = window.open();
    //get the history
    $.post("ajaxQuery.php", {
        identifier : identifier,
        vanid : str
    },
    //ajax query 
    function(data) {
        //response is here
        $(w.document.body).html(data);

    });//end ajax                

}
于 2013-02-25T15:24:46.830 に答える
2

代わりに試してください:

var w = window.open();
w.document.write(data);

ドキュメントオブジェクトの「innerHTML」プロパティ(jQueryが.html()使用するもの)は、新しいウィンドウにはないHTMLドキュメントを表します。たとえそうだったとしても、完全なドキュメントをHTMLドキュメント内に配置することは実際には意味がありません。新しく作成されたドキュメントなので、書き込むだけです。

于 2013-02-25T15:10:18.803 に答える
-1

この平和なコードは機能します。

var data = "<h1>Test</h1>";
var w = window.open("", "mywindow1", "width=350,height=150");
$(w.document.body).html(data);

新しいウィンドウを開くときに、いくつかのパラメーターを通知する必要があります。

ただし、可能であれば、jquery UI や Twitter Bootstrap などの別の方法を使用してポップアップを使用しないようにすることはお勧めしません。

于 2013-02-25T15:26:49.430 に答える