SecurityError: pushState()
κ° 100λ² νΈμΆλλ μκ°λΆν° Safari(iOS λ° OSX)μμ DOM μμΈ 18μ΄ λ°μν©λλ€.
https://forums.developer.apple.com/thread/36650
λ°μ΄μ¬λ¦°: 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);
}
μ€ν¨:
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
κ·νκ° κ²μν Apple κ°λ°μ ν¬λΌ λ§ν¬λ μ΄ λ¬Έμ κ° μ¬ν리μ μμμ μμ¬νλ κ² κ°μ΅λλ€. λ°±λ³Έμ΄ μ΄μ λν΄ λ¬΄μμ νκΈ°λ₯Ό μνμλκΉ?
λ°±λ³Έμ λΈλΌμ°μ λ²κ·Έλ₯Ό ν΄κ²°ν΄μΌ ν©λλ€.
@zowersμ λν΄ μκ³ μλ ν΄κ²° λ°©λ²μ΄ μμ΅λκΉ? μ΄ λ²κ·Έλ νμμ΄ λκΈ°μ μΌλ‘ 100λ² νΈμΆλ λλ§ λ°μν©λκΉ μλλ©΄ μΌλ°μ μΌλ‘ 100λ² νΈμΆλλ©΄ λ°μν©λκΉ?
μ΄ λ¬Έμ λ₯Ό ν΄κ²°νλ €λ©΄ try/catch
μμ νμμ λνν΄μΌ νμ΅λλ€.
μ¬ν리 9.1μμ (μ΅μ μμ νμ¬) - μ΄ 100λ°°
μ¬ν리 9.1.1 κ°λ°μ ν리뷰μμ - 30μ΄μ 100ν
μ μ κ³ μ³μ§λμ?
μλνμ§ μλ κΈ°λ₯μ κ°λ κ²μ΄ νμ©λλ€λ λ§μ
λκΉ?
λλ μ¬ν리 λ²κ·Έλ₯Ό μ½κ³ μμ© κ°λ₯ν ν΄κ²°μ± μ λ³΄μ§ λͺ»νκΈ° λλ¬Έμ κ±°κΈ°μ λ°°μΉνμ΅λλ€. try/catchλ₯Ό μ¬μ©νκ³ 100λ²μ§Έ λ³κ²½ μ΄ν κ²½λ‘λ₯Ό λ³κ²½νμ§ μλ κ²μ νμ©λμ§ μμ΅λλ€.
try/catchλ₯Ό μ¬μ©νκ³ 100λ²μ§Έ λ³κ²½ μ΄ν κ²½λ‘λ₯Ό λ³κ²½νμ§ μλ κ²μ νμ©λμ§ μμ΅λλ€.
λμ. κ·Έκ²μ νμ¬μ νλλ³΄λ€ λ λμ μ리 μλ μ€ν¨μ λλ€.
μλ§λ μ€λ₯κ° λ°μν κ²½μ° ν΄μλ‘ ν΄λ°±ν΄μΌ ν©λλ€.
μ€λ μμ μ¬νμ΄ ν¬ν¨λ Safari 9.1.1μ΄ μΆμλμμ΅λλ€.
in safari safari 9.1.1 history.pushState()
λ 30μ΄ λμ 100λ² νΈμΆν κ²½μ°μλ§ μ€ν¨ν©λλ€.
λ«μ? μ¬λλ€μ΄ 곧 μ λ°μ΄νΈλ₯Ό λ°κΈ°λ₯Ό λ°λΌμλκΉ?
μ΄κ²μ μ°λ¦¬κ° ν μ μλ κ²μ΄ λ§μ§ μμ Safariμ λ²κ·Έμ λλ€. 9.1μ΄ λμ¨ μ§ 2κ°μ λ°μ μ λμλ€λ μ μ κ°μν λ μ°λ¦¬λ μ무 κ²λ νμ§ μκ³ μ¬λλ€μ΄ μ λ°μ΄νΈνλλ‘ νλ κ²μ΄ μμ νλ€κ³ μκ°ν©λλ€.