Backbone: Pengecualian DOM 18 pada navigasi () di Safari 9.1

Dibuat pada 13 Mei 2016  ·  11Komentar  ·  Sumber: jashkenas/backbone

SecurityError: Pengecualian DOM 18 dilemparkan oleh Safari (iOS dan OSX) dari saat pushState() dipanggil 100 kali.

https://forums.developer.apple.com/thread/36650
biola: https://jsfiddle.net/n3uxkyhr/5/

var TestRouter = Backbone.Router.extend( {
    initialize: function() {
        this.route("/test/:id", function( id ) { console.log("test" + id) });
    }
} );
var router = new TestRouter();
Backbone.history.start({pushState: true});

try {
  for(var i = 0; i < 200; i++ ) {
      router.navigate("/test/"+i);
    }
    alert("passed, i = " + i);
} catch( e ) {
    var msg = "failed on i " + i + " with error: " + e + "\nStack: " + e.stack;
  console.error( e, msg );
  alert(msg);
}

gagal dengan:

failed on i 100 with error: Error: SecurityError: DOM Exception 18
Stack: pushState@[native code]
navigate<strong i="14">@https</strong>://cdnjs.cloudflare.com/ajax/libs/backbone.js/1.3.3/backbone.js:1823:69
navigate<strong i="15">@https</strong>://cdnjs.cloudflare.com/ajax/libs/backbone.js/1.3.3/backbone.js:1522:32
global code<strong i="16">@https</strong>://fiddle.jshell.net/n3uxkyhr/6/show/:63:22"
global code — show:68
wontfix

Semua 11 komentar

Tautan forum pengembang apel yang Anda poskan tampaknya menyarankan masalah ini dengan safari. Apa yang Anda ingin tulang punggung lakukan tentang ini?

backbone perlu mengatasi bug browser.

Apakah ada solusi yang Anda ketahui tentang @zowers? Apakah bug ini hanya terjadi jika navigasi dipanggil 100 kali secara serempak atau akankah terjadi jika dipanggil 100 kali secara umum?

untuk solusinya saya harus membungkus navigasi dalam try/catch
di safari 9.1 (stabil terbaru hari ini) - totalnya 100 kali lipat
di pratinjau pengembang safari 9.1.1 - 100 kali dalam 30 detik

mengapa itu tidak akan diperbaiki?
apakah Anda mengatakan itu dapat diterima untuk memiliki fungsi yang tidak berfungsi?

Saya menempatkannya di sana karena membaca bug safari saya tidak melihat solusi yang dapat diterima. Menggunakan coba/tangkap dan tidak mengubah rute setelah perubahan ke-100 tidak dapat diterima IMO

Menggunakan coba/tangkap dan tidak mengubah rute setelah perubahan ke-100 tidak dapat diterima IMO

Sepakat. Itu adalah kegagalan diam-diam, yang lebih buruk daripada perilaku saat ini.

mungkin navigasi harus mundur ke hash jika terjadi kesalahan

hari ini safari 9.1.1 dengan perbaikan telah dirilis
di safari safari 9.1.1 history.pushState() gagal hanya jika dipanggil 100 kali dalam 30 detik

tertutup? berharap orang akan segera mendapatkan pembaruan?

Ini adalah bug di Safari tanpa banyak yang bisa kita lakukan. Mengingat 9.1 baru keluar selama 2 bulan, saya pikir kami aman tidak melakukan apa pun dan membiarkan orang memperbarui.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat