在replaceState
will be called more than 100 times的Safari中,它会抛出:
SecurityError:DOM异常18:尝试突破 用户代理的安全策略。
更多信息:https://forums.developer.apple.com/thread/36650
我的问题是,在某些特定情况下,我会在用户滚动时更改网址(使用$(window).scroll(function() {...
。正如您猜测的那样,我会在不到2秒的时间内达到100的限制。
history.replaceState({}, '', newStringWithURLToUpdateInClientBrowser);
这有什么解决方法吗?允许管理history
的现有库可以解决这个问题吗?
所有其他浏览器都不受此问题的影响。只有Webkit。 这是查看错误的小提琴:https://jsfiddle.net/j1sxxLwy/
在Chrome中,它会达到100,但请尝试在Safari中运行。
答案 0 :(得分:1)
您是否考虑过滚动事件?
E.g:
var timer = null;
$( window ).scroll( function() {
clearTimeout( timer );
timer = setTimeout( function() {
history.replaceState( {}, '', newStringWithURLToUpdateInClientBrowser );
}, 1000 );
} );
干杯,拉乌尔