Cara menggunakan innerhtml alternative mdn

Jendela popup adalah salah satu metode tertua untuk menampilkan tambahan dokumen kepada pengguna. Secara umum, kamu hanya menjalankan:

Show

    window.open('https://javascript.info/')

    …Dan akan terbuka jendela baru yang telah diberi URL, Kebanyakan peramban moderen akan membuka jendela baru bukannya jendela terpisah. Popup ada sejak jaman dahulu. Ide awalnya adalah untuk menampilkan konten lain tanpa menutup jendela utama. Saat ini, ada cara lain untuk melakukan hal tersebut: Kita bisa membuka konten secara dinamis dengan fetch dan menampilkannya di dalam sebuah

    // popup diblokir
    window.open('https://javascript.info');
    
    // popup diperbolehkan
    button.onclick = () => {
      window.open('https://javascript.info');
    };
    1 yang dihasilkan secara dinamis. Jadi popups adalah sesuatu yang tidak kita gunakan setiap hari.

    Kemudian, popups itu rumit di perangkat seluler, karena tidak menampilkan beberapa jendela secara serempak.

    Namun, ada tugas dimana popups masih digunakan, misalnya untuk otorisasi OAuth (masuk dengan Google/Facebook/…), karena:

    1. Popup adalah sebuah jendela terpisah dengan ekosistem Javascript independennya sendiri. Sehingga aman membuka popup dari situs pihak ketiga yang tidak terpercaya.
    2. Sangat mudah untuk membuka popup.
    3. Sebuah popup dapat menavigasi (merubah URL) dan mengirimkan pesan ke pembuka jendela.

    Di masa lalu, situs jahat sering sekali menyalahgunakan popups. Sebuah halaman jahat dapat membuka banyak sekali jendela popup dengan iklan. Sehingga saat ini kebanyakan peramban mencoba untuk memblokir dan melindungi pengguna.

    Kebanyakan peramban akan memblokir popups jika dipangil dari luar aktifitas yang dipicu oleh pengguna seperti

    // popup diblokir
    window.open('https://javascript.info');
    
    // popup diperbolehkan
    button.onclick = () => {
      window.open('https://javascript.info');
    };
    2.

    Sebgai contoh:

    // popup diblokir
    window.open('https://javascript.info');
    
    // popup diperbolehkan
    button.onclick = () => {
      window.open('https://javascript.info');
    };

    Dengan cara ini pengguna agak terlindungi dari popups yang tidak diinginkan dan fungsionalitasnya tidak dinonaktifkan secara total. Bagaimana jika popups dibuka dari

    // popup diblokir
    window.open('https://javascript.info');
    
    // popup diperbolehkan
    button.onclick = () => {
      window.open('https://javascript.info');
    };
    2, tetapi setelah
    // popup diblokir
    window.open('https://javascript.info');
    
    // popup diperbolehkan
    button.onclick = () => {
      window.open('https://javascript.info');
    };
    4 ? Hal ini sedikit rumit.

    Coba kode berikut:

    // terbuka setelah 3 detik
    setTimeout(() => window.open('http://google.com'), 3000);

    Popup terbuka di Chrome, namun diblokir di Firefox.

    …Jika kita mengurangi penundaan, popup akan bekerja di Firefox juga:

    // open after 1 seconds
    setTimeout(() => window.open('http://google.com'), 1000);

    Perbedaannya adalah Firefox memperlakukan sebuah timeout antara 2000ms atau kurang dari itu untuk dapat diterima, namun lebih dari itu – hilangkan “kepercayaan”, Firefox berasumsi bahwa saat ini “diluar kendali pengguna”. Sehingga yang pertama akan diblokir, dan yang kedua tidak.

    Sintak untuk membuka popup adalah:

    // popup diblokir
    window.open('https://javascript.info');
    
    // popup diperbolehkan
    button.onclick = () => {
      window.open('https://javascript.info');
    };
    5: url : URL yang akan dimuat di dalam jendela baru.

    namanama dari jendela baru. Setiap jendela memiliki sebuah
    // popup diblokir
    window.open('https://javascript.info');
    
    // popup diperbolehkan
    button.onclick = () => {
      window.open('https://javascript.info');
    };
    6, dan dengan ini kita bisa secara spesifik menentukan jendela mana yang digunakan untuk popup. Jika telah ada jendela menggunakan nama tersebut – URL akan menjadi gantinya, jika tidak jendela baru terbuka.parameterKonfigurasi untuk jendela baru. Mengandung pengaturan, yang dipisahkan dengan koma. Tidak boleh ada spasi di dalam parameter, sebagai contoh:
    // popup diblokir
    window.open('https://javascript.info');
    
    // popup diperbolehkan
    button.onclick = () => {
      window.open('https://javascript.info');
    };
    7.

    Pengaturan untuk

    // popup diblokir
    window.open('https://javascript.info');
    
    // popup diperbolehkan
    button.onclick = () => {
      window.open('https://javascript.info');
    };
    8:

    • Posisi:
      • // popup diblokir
        window.open('https://javascript.info');
        
        // popup diperbolehkan
        button.onclick = () => {
          window.open('https://javascript.info');
        };
        9 (numeric) – mengatur sudut jendela atas-kanan di layar. Namun ada batasan: sebuah jendela baru tidak bisa diposisikan tersembunyi.
      • // terbuka setelah 3 detik
        setTimeout(() => window.open('http://google.com'), 3000);
        0 (numeric) – Lebar dan tinggi dari jendela baru. Namun ada batasan pada Lebar/tinggi minimal, sehingga tidak mungkin untuk membuat jendela tidak terlihat.
    • Fitur jendela:
      • // terbuka setelah 3 detik
        setTimeout(() => window.open('http://google.com'), 3000);
        1 (yes/no) – menampilkan atau menyembunyikan menu peramban pada jendela baru.
      • // terbuka setelah 3 detik
        setTimeout(() => window.open('http://google.com'), 3000);
        2 (yes/no) – menampilkan atau menyembunyikan navigasi bar peramban (kembali, kedepan, isi ulang dan sebagainya) pada jendela baru.
      • // terbuka setelah 3 detik
        setTimeout(() => window.open('http://google.com'), 3000);
        3 (yes/no) – menampilkan atau menyembunyikan URL pada jendela baru. FF dan IE tidak mengizinkan untuk meyembunyikan URL secara default
      • // terbuka setelah 3 detik
        setTimeout(() => window.open('http://google.com'), 3000);
        4 (yes/no) – menampilkan atau menyembunyikan bar status. Sekali lagi kebanyakan peramban memaksa untuk menampilkannya.
      • // terbuka setelah 3 detik
        setTimeout(() => window.open('http://google.com'), 3000);
        5 (yes/no) – mengizinkan atau menolak untuk merubah ukuran jendela baru. Tidak direkomendasikan.
      • // terbuka setelah 3 detik
        setTimeout(() => window.open('http://google.com'), 3000);
        6 (yes/no) – mengizinkan atau menolak scrollbars. untuk jendela baru. Tidak direkomendasikan.

    Ada juga sedikit dukungan untuk fitur spesifik peramban, Dimana biasanya tidak digunakan. Periksa window.open in MDN Sebagai contoh.

    Mari buka jendela dengan pengaturan fitur paling sedikit untuk melihat fitur mana yang akan diizinkan atau tidak oleh peramban:

    let params = `scrollbars=no,resizable=no,status=no,location=no,toolbar=no,menubar=no,
    width=0,height=0,left=-1000,top=-1000`;
    
    open('/', 'test', params);

    Dalam contoh kebanyakan “fitur jendela” telah dinonaktifkan dan jendela berada di luar layar. Jalankan dan lihat apa yang terjadi. Kebanyakan peramban akan “Memperbaiki” hal-hal yang ganjil seperti

    // terbuka setelah 3 detik
    setTimeout(() => window.open('http://google.com'), 3000);
    0 yang kosong dan
    // popup diblokir
    window.open('https://javascript.info');
    
    // popup diperbolehkan
    button.onclick = () => {
      window.open('https://javascript.info');
    };
    9 yang keluar jendela. Sebagai contoh, Chrome membuka semacam jendela dengan lebar/tinggi penuh. sehingga akan menempati layar penuh.

    Mari tambahkan opsi penempatan normal dan masuk akal untuk koordinat

    // terbuka setelah 3 detik
    setTimeout(() => window.open('http://google.com'), 3000);
    9,
    // open after 1 seconds
    setTimeout(() => window.open('http://google.com'), 1000);
    0,
    // open after 1 seconds
    setTimeout(() => window.open('http://google.com'), 1000);
    1,
    // open after 1 seconds
    setTimeout(() => window.open('http://google.com'), 1000);
    2:

    let params = `scrollbars=no,resizable=no,status=no,location=no,toolbar=no,menubar=no,
    width=600,height=300,left=100,top=100`;
    
    open('/', 'test', params);

    Kebanyakan peramban menampilkan contoh diatas sesuai dengan yang diinginkan.

    Aturan untuk penggaturan yang dihilangkan:

    • Jika tidak ada argumen ketiga di dalam pemanggilan
      // open after 1 seconds
      setTimeout(() => window.open('http://google.com'), 1000);
      3, atau kosong, maka parameter default jendela yang akan digunakan.
    • Jika ada serangkaian parameter, namun sebagian fitur
      // open after 1 seconds
      setTimeout(() => window.open('http://google.com'), 1000);
      4 diabaikan, maka fitur yang diabaikan akan diasumsikan untuk memiliki nilai
      // open after 1 seconds
      setTimeout(() => window.open('http://google.com'), 1000);
      5. Sehingga jika anda menetapkan parameter, pastikan secara eksplisit anda telah menyetel semua fitur yang dibutuhkan ke yes.
    • Jika tidak ada
      // popup diblokir
      window.open('https://javascript.info');
      
      // popup diperbolehkan
      button.onclick = () => {
        window.open('https://javascript.info');
      };
      9 di dalam parameter, maka peramban akan mencoba untuk membuka sebuah jendela baru didekat jendela yang terakhir terbuka.
    • Jika tidak ada
      // terbuka setelah 3 detik
      setTimeout(() => window.open('http://google.com'), 3000);
      0, maka jendela baru akan memiliki ukuran yang sama seperti jendela yang terakhir terbuka.

    Pemanggilan

    // open after 1 seconds
    setTimeout(() => window.open('http://google.com'), 1000);
    8 mengembalikan referensi ke jendela baru. referensi itu bisa digunakan untuk memanipulasi properti, merubah lokasi dan melakukan hal lain yang lebih dari itu.

    Pada contoh ini, kita menghasilkan popup konten dari Javascript:

    let newWin = window.open("about:blank", "hello", "width=200,height=200");
    
    newWin.document.write("Hello, world!");

    Dan disini kita memodifikasi konten setelah dimuat:

    let newWindow = open('/', 'example', 'width=300,height=300')
    newWindow.focus();
    
    alert(newWindow.location.href); // (*) about:blank, loading belum dimulai
    
    newWindow.onload = function() {
      let html = `<div style="font-size:30px">Welcome!</div>`;
      newWindow.document.body.insertAdjacentHTML('afterbegin', html);
    };

    Penting untuk dicatat: Segera setelah

    // open after 1 seconds
    setTimeout(() => window.open('http://google.com'), 1000);
    9, saat itu jendela baru belum dimuat. Hal itu didemonstrasikan oleh
    let params = `scrollbars=no,resizable=no,status=no,location=no,toolbar=no,menubar=no,
    width=0,height=0,left=-1000,top=-1000`;
    
    open('/', 'test', params);
    0 di baris
    let params = `scrollbars=no,resizable=no,status=no,location=no,toolbar=no,menubar=no,
    width=0,height=0,left=-1000,top=-1000`;
    
    open('/', 'test', params);
    1, Sehingga kita menunggu untuk
    let params = `scrollbars=no,resizable=no,status=no,location=no,toolbar=no,menubar=no,
    width=0,height=0,left=-1000,top=-1000`;
    
    open('/', 'test', params);
    2 untuk memodifikasinya. Kita juga bisa menggunakan handler
    let params = `scrollbars=no,resizable=no,status=no,location=no,toolbar=no,menubar=no,
    width=0,height=0,left=-1000,top=-1000`;
    
    open('/', 'test', params);
    3 untuk
    let params = `scrollbars=no,resizable=no,status=no,location=no,toolbar=no,menubar=no,
    width=0,height=0,left=-1000,top=-1000`;
    
    open('/', 'test', params);
    4.

    Same origin policy

    Jendela dapat dengan leluasa mengakses konten satu sama lain hanya jika mereka datang dari asal yang sama (protocol://domain:port yang sama) Jika tidak, semisal jendela utama datang dari

    let params = `scrollbars=no,resizable=no,status=no,location=no,toolbar=no,menubar=no,
    width=0,height=0,left=-1000,top=-1000`;
    
    open('/', 'test', params);
    5, dan popup datang dari
    let params = `scrollbars=no,resizable=no,status=no,location=no,toolbar=no,menubar=no,
    width=0,height=0,left=-1000,top=-1000`;
    
    open('/', 'test', params);
    6, hal ini mustahil dilakukan demi alasan keamanan penguna. Untuk lebih detail lihat bagian Cross-window communication.

    Popup mungkin mengakses “pembuka” jendela menggunakan referensei

    let params = `scrollbars=no,resizable=no,status=no,location=no,toolbar=no,menubar=no,
    width=0,height=0,left=-1000,top=-1000`;
    
    open('/', 'test', params);
    7. Ini akan menjadi
    let params = `scrollbars=no,resizable=no,status=no,location=no,toolbar=no,menubar=no,
    width=0,height=0,left=-1000,top=-1000`;
    
    open('/', 'test', params);
    8 dari semua jendela kecuali popup. Jika code dibawah dijalankan, maka konten pembuka jendela saat ini akan dibuah menjadi “Test”:

    let newWin = window.open("about:blank", "hello", "width=200,height=200");
    
    newWin.document.write(
      "<script>window.opener.document.body.innerHTML = 'Test'<\/script>"
    );

    Sehingga terjadi koneksi dua arah antara jendela: jendela utama dan popup memiliki sebuah referensi satu sama lain.

    Untuk menutup sebuah jendela:

    let params = `scrollbars=no,resizable=no,status=no,location=no,toolbar=no,menubar=no,
    width=0,height=0,left=-1000,top=-1000`;
    
    open('/', 'test', params);
    9.

    Untuk memeriksa apakah jendela sudah tertutup:

    let params = `scrollbars=no,resizable=no,status=no,location=no,toolbar=no,menubar=no,
    width=600,height=300,left=100,top=100`;
    
    open('/', 'test', params);
    0.

    Secara teknis, metode

    let params = `scrollbars=no,resizable=no,status=no,location=no,toolbar=no,menubar=no,
    width=600,height=300,left=100,top=100`;
    
    open('/', 'test', params);
    1 tersedia pada setiap
    let params = `scrollbars=no,resizable=no,status=no,location=no,toolbar=no,menubar=no,
    width=600,height=300,left=100,top=100`;
    
    open('/', 'test', params);
    2, namun
    let params = `scrollbars=no,resizable=no,status=no,location=no,toolbar=no,menubar=no,
    width=600,height=300,left=100,top=100`;
    
    open('/', 'test', params);
    3 diabaikan oleh kebanyakan beramban jika
    let params = `scrollbars=no,resizable=no,status=no,location=no,toolbar=no,menubar=no,
    width=600,height=300,left=100,top=100`;
    
    open('/', 'test', params);
    2 tidak dibuat dengan
    // open after 1 seconds
    setTimeout(() => window.open('http://google.com'), 1000);
    9. Jadi hanya akan bekerja untuk popup.

    properti

    let params = `scrollbars=no,resizable=no,status=no,location=no,toolbar=no,menubar=no,
    width=600,height=300,left=100,top=100`;
    
    open('/', 'test', params);
    6 bernilai
    let params = `scrollbars=no,resizable=no,status=no,location=no,toolbar=no,menubar=no,
    width=600,height=300,left=100,top=100`;
    
    open('/', 'test', params);
    7 jika jendela ditutup. Hal ini berguna untuk memeriksa apakah popup (atau jendela utama) masih terbuka atau tidak. seorang pengguna bisa menutupnya kapan saja, dan kode kita mengambil pertimbangan untuk diperhitungkan.

    Code dibawah ini dimuat dan kemudian menutup jendela:

    let newWindow = open('/', 'example', 'width=300,height=300');
    
    newWindow.onload = function() {
      newWindow.close();
      alert(newWindow.closed); // benar
    };

    Ada metode untuk memindahkan/merubah ukuran sebuah jendela:

    let params = `scrollbars=no,resizable=no,status=no,location=no,toolbar=no,menubar=no,
    width=600,height=300,left=100,top=100`;
    
    open('/', 'test', params);
    8Memindahkan jendela ke posisi
    let params = `scrollbars=no,resizable=no,status=no,location=no,toolbar=no,menubar=no,
    width=600,height=300,left=100,top=100`;
    
    open('/', 'test', params);
    9 piksel ke kanan dan
    let newWin = window.open("about:blank", "hello", "width=200,height=200");
    
    newWin.document.write("Hello, world!");
    0 piksel kebawah. Nilai negatif dapat diterima (untuk memindahkan kiri/atas).
    let newWin = window.open("about:blank", "hello", "width=200,height=200");
    
    newWin.document.write("Hello, world!");
    1Memindahkan jendela ke koordinat
    let newWin = window.open("about:blank", "hello", "width=200,height=200");
    
    newWin.document.write("Hello, world!");
    2 di layar.
    let newWin = window.open("about:blank", "hello", "width=200,height=200");
    
    newWin.document.write("Hello, world!");
    3Merubah ukuran jendela dengan memberikan
    // terbuka setelah 3 detik
    setTimeout(() => window.open('http://google.com'), 3000);
    0 ke ukuran sat ini. Nilai negatif dapat diterima.
    let newWin = window.open("about:blank", "hello", "width=200,height=200");
    
    newWin.document.write("Hello, world!");
    5Merubah ukuran jendela ke ukuran yang diberikan.

    Ada juga

    let newWin = window.open("about:blank", "hello", "width=200,height=200");
    
    newWin.document.write("Hello, world!");
    6 event.

    Hanya popups

    Untuk mencegah penyalahgunaan, peramban biasanya memblokir metode ini. Mereka hanya bekerja baik pada popup yang kami buka, yang tidak memiliki tab tambahan.

    Tidak ada modifikasi/maksimasi

    Javascript tidak memiliki cara untuk mengecilkan atau memaksimalkan sebuah jendela. fungsi OS-level ini tersembunyi dari pengembang frontend metode Move/resize tidak dapat berjalan pada jendela maximized/minimized.

    Kami telah membicarakan tentang mengulir jendela di bagian Window sizes and scrolling.

    let newWin = window.open("about:blank", "hello", "width=200,height=200");
    
    newWin.document.write("Hello, world!");
    7 : Gulir jendela
    let params = `scrollbars=no,resizable=no,status=no,location=no,toolbar=no,menubar=no,
    width=600,height=300,left=100,top=100`;
    
    open('/', 'test', params);
    9 piksel ke kanan dan
    let newWin = window.open("about:blank", "hello", "width=200,height=200");
    
    newWin.document.write("Hello, world!");
    0 kebawah terhadap posisi gulir saat ini. Nilai negatif dapat diterima.
    let newWindow = open('/', 'example', 'width=300,height=300')
    newWindow.focus();
    
    alert(newWindow.location.href); // (*) about:blank, loading belum dimulai
    
    newWindow.onload = function() {
      let html = `<div style="font-size:30px">Welcome!</div>`;
      newWindow.document.body.insertAdjacentHTML('afterbegin', html);
    };
    0 : Scroll the window to the given coordinates
    let newWin = window.open("about:blank", "hello", "width=200,height=200");
    
    newWin.document.write("Hello, world!");
    2.

    let newWindow = open('/', 'example', 'width=300,height=300')
    newWindow.focus();
    
    alert(newWindow.location.href); // (*) about:blank, loading belum dimulai
    
    newWindow.onload = function() {
      let html = `<div style="font-size:30px">Welcome!</div>`;
      newWindow.document.body.insertAdjacentHTML('afterbegin', html);
    };
    2Mengulir jendela untuk membuat
    let newWindow = open('/', 'example', 'width=300,height=300')
    newWindow.focus();
    
    alert(newWindow.location.href); // (*) about:blank, loading belum dimulai
    
    newWindow.onload = function() {
      let html = `<div style="font-size:30px">Welcome!</div>`;
      newWindow.document.body.insertAdjacentHTML('afterbegin', html);
    };
    3 terlihat diatas atau di bawah dari
    let newWindow = open('/', 'example', 'width=300,height=300')
    newWindow.focus();
    
    alert(newWindow.location.href); // (*) about:blank, loading belum dimulai
    
    newWindow.onload = function() {
      let html = `<div style="font-size:30px">Welcome!</div>`;
      newWindow.document.body.insertAdjacentHTML('afterbegin', html);
    };
    4, Kemudian ada juga event
    let newWindow = open('/', 'example', 'width=300,height=300')
    newWindow.focus();
    
    alert(newWindow.location.href); // (*) about:blank, loading belum dimulai
    
    newWindow.onload = function() {
      let html = `<div style="font-size:30px">Welcome!</div>`;
      newWindow.document.body.insertAdjacentHTML('afterbegin', html);
    };
    5.

    Secara teori, ada metode

    let newWindow = open('/', 'example', 'width=300,height=300')
    newWindow.focus();
    
    alert(newWindow.location.href); // (*) about:blank, loading belum dimulai
    
    newWindow.onload = function() {
      let html = `<div style="font-size:30px">Welcome!</div>`;
      newWindow.document.body.insertAdjacentHTML('afterbegin', html);
    };
    6 dan
    let newWindow = open('/', 'example', 'width=300,height=300')
    newWindow.focus();
    
    alert(newWindow.location.href); // (*) about:blank, loading belum dimulai
    
    newWindow.onload = function() {
      let html = `<div style="font-size:30px">Welcome!</div>`;
      newWindow.document.body.insertAdjacentHTML('afterbegin', html);
    };
    7 untuk memfokuskan/tidak fokus sebuah jendela. Dan ada juga even
    let newWindow = open('/', 'example', 'width=300,height=300')
    newWindow.focus();
    
    alert(newWindow.location.href); // (*) about:blank, loading belum dimulai
    
    newWindow.onload = function() {
      let html = `<div style="font-size:30px">Welcome!</div>`;
      newWindow.document.body.insertAdjacentHTML('afterbegin', html);
    };
    8 yang mengizinkan untuk menangkap momen saat pegunjung fokus pada jendela dan berpindah ke tempat lain.

    Meskipun, dalam praktiknya hal ini dibatasi, karena pada masa lalu halaman jahat menyalahgunakannya.

    Sebagai contoh, lihat code ini:

    // popup diblokir
    window.open('https://javascript.info');
    
    // popup diperbolehkan
    button.onclick = () => {
      window.open('https://javascript.info');
    };
    0

    Mesikipun pengguna mencoba untuk berpindah dari jendela (

    let newWindow = open('/', 'example', 'width=300,height=300')
    newWindow.focus();
    
    alert(newWindow.location.href); // (*) about:blank, loading belum dimulai
    
    newWindow.onload = function() {
      let html = `<div style="font-size:30px">Welcome!</div>`;
      newWindow.document.body.insertAdjacentHTML('afterbegin', html);
    };
    9), hal ini membawa jendela kembali fokus. Tujuanya adalah untuk “mengunci” pengguna selama berada di dalam
    let params = `scrollbars=no,resizable=no,status=no,location=no,toolbar=no,menubar=no,
    width=600,height=300,left=100,top=100`;
    
    open('/', 'test', params);
    2.

    Sehingga peramban harus memperkenalkan banyak batasan kode seperti ini dan melindungi pengguna dari iklan dan halaman jahat. Mereka bergantung ke peramban.

    Sebagai contoh, sebuah peramban mobile pada umumnya mengabaikan

    let newWindow = open('/', 'example', 'width=300,height=300')
    newWindow.focus();
    
    alert(newWindow.location.href); // (*) about:blank, loading belum dimulai
    
    newWindow.onload = function() {
      let html = `<div style="font-size:30px">Welcome!</div>`;
      newWindow.document.body.insertAdjacentHTML('afterbegin', html);
    };
    6. Dan fokus tidak bekerja saat sebuah popup terbuka di dalam tab yang terpisah daripada membuka sebuah jendela baru.

    Masih ada beberapa kasus pengunaan menggunakan pangilan sejenis untuk menjalankan dan berguna.

    Sebagai contoh:

    • Saat kita membuka popup, mungkin ide yang bagus untuk menjalankan
      let newWin = window.open("about:blank", "hello", "width=200,height=200");
      
      newWin.document.write(
        "<script>window.opener.document.body.innerHTML = 'Test'<\/script>"
      );
      2. untuk beberapa kombinasi OS/peramban memastikan bahwa pengguna saat ini berada di dalam jendela baru
    • Jika kita ingin melacak kapan pengunjung mengunakan web-app, kita dapat melacak
      let newWin = window.open("about:blank", "hello", "width=200,height=200");
      
      newWin.document.write(
        "<script>window.opener.document.body.innerHTML = 'Test'<\/script>"
      );
      3. Hal ini mengijinkan kita untuk menangguhkan / melanjutkan di dalam aktifitas animasi dan semacamnya. Tetapi tolong dicatat bahwa event
      let newWin = window.open("about:blank", "hello", "width=200,height=200");
      
      newWin.document.write(
        "<script>window.opener.document.body.innerHTML = 'Test'<\/script>"
      );
      4 berarti pengunjung berpindah dari jendela, teteapi mereka mungkin masih mengamatinya. Jendela berada di latar belakang, namun mungkin masih dapat dilihat.

    Jendela popup jarang digunakan, karena ada beberapa alternatif: memuat dan menampilkan informasi in-page, atau di dalam iframe.

    Jika kita akan membuka popup, cara yang benar adalah dengan memberitahu pengguna tentang hal ini. Sebuah ikon “jendela terbuka” dekat tautan atau tombol yang mengizinkan pengunjung untuk tetap fokus dan ingat kedua jendela.

    • Popup dapat dibuka dengan pemanggilan
      let newWin = window.open("about:blank", "hello", "width=200,height=200");
      
      newWin.document.write(
        "<script>window.opener.document.body.innerHTML = 'Test'<\/script>"
      );
      5. hal ini akan mengembalikan referensi untuk jendela yang lebih baru.
    • Peramban memblokir pemanggilan
      // open after 1 seconds
      setTimeout(() => window.open('http://google.com'), 1000);
      3 dari kode yang berasal dari luar aksi pengguna. Biasanya notifikasi muncul, sehingga pengguna mungkin mengizinkannya.
    • Secara umum peramban membuka tab baru, tetapi jika ukuran disediakan, maka akan terbuka jendela popup.
    • Popup mungkin mengakses pembuka jendela menggunakan properti
      let newWin = window.open("about:blank", "hello", "width=200,height=200");
      
      newWin.document.write(
        "<script>window.opener.document.body.innerHTML = 'Test'<\/script>"
      );
      7.
    • Jendela utama dan popup dapat secara bebas membaca dan memodifikasi satu sama lain jika mereka memiliki asal yang sama. Jika tidak mereka dapat merubah lokasi satu sama lain dan bertukar pesan.

    Untuk menutuo popup: gunakan pemanggilan

    let params = `scrollbars=no,resizable=no,status=no,location=no,toolbar=no,menubar=no,
    width=600,height=300,left=100,top=100`;
    
    open('/', 'test', params);
    1. Juga pengguna mungkin menutupnya (seperti jendela yang lain).
    let newWin = window.open("about:blank", "hello", "width=200,height=200");
    
    newWin.document.write(
      "<script>window.opener.document.body.innerHTML = 'Test'<\/script>"
    );
    9 adalah
    let params = `scrollbars=no,resizable=no,status=no,location=no,toolbar=no,menubar=no,
    width=600,height=300,left=100,top=100`;
    
    open('/', 'test', params);
    7 setelahnya.