javascript - Åbn flere vinduer efter at have bekræftet php-tilstand

Indlæg af Hanne Mølgaard Plasc

Problem



jeg har filen 1.html:


.....


 <script src="/libs/jquery-1.3.1.min.js" type="text/javascript"></script>
    <script type="text/javascript">
    var url0='{$url0}';
    var url1='{$url1}';
    var url2='{$url2}';
    var url3='{$url3}';
    var OPEN\_ON = false;
    openurls= function(){
    if(confirm('Opens all?') && OPEN\_ON == false){
                    OPEN\_ON = true;
    $.ajax({<br/>
        type: "POST",
        url: "a1.php",
        data: jsonData,
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function(msg) {
            success = true;

        },
        error: function(msg) {

        }
    })

    if(success) { 
     window.open(url0)
     window.open(url1)
    window.open(url2)
    window.open(url3) 
    }


                 setTimeout("location.reload(true);",3000) 

                    OPEN\_ON = false
                }
                return false

    }


Spørgsmål er:

Hvordan sender jeg url0, url1, url2 og url3 til filen a1.php og derefter efter at have kontrolleret nogle betingelser for at sende dem tilbage. enter code here

Bedste reference


Du skal bare sætte disse window.open() opkald indenfor funktionen 'succes:' tilbagekald.


Nu, når du gør det, vil du finde ud af, at de nye vinduer ikke rent faktisk åbnes. Browserne vil blokere dem, fordi de ligner aggressive popup-annoncer. Fordi disse window.open opkald sker i en anden kontekst end en direkte brugerinitieret begivenhed (som et klik på et klik), bliver de blokeret. Når det er sagt, her er hvad din 'succes' -funktion skal se ud:


$.ajax({<br/>
    type: "POST",
    url: "a1.php",
    data: { url0: url0, url1: url1, url2: url2, url3: url3 },
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function(msg) {
      window.open(url0);
      window.open(url1);
      window.open(url2);
      window.open(url3);
    },
    error: function(msg) {

    }
})


Det vil 'arbejde', da window.open() opkaldene vil blive lavet, men det vandt 't' arbejde ', fordi du ikke har fået popups. Du skal gøre det sådan, at brugeraktivitet (et 'klik' et eller andet sted) gør vinduerne åbne, ikke en XMLHttpRequest tilstandsændring.