Ответ 1
Основываясь на вашем JS Fiddle (ну и модифицированная версия http://jsfiddle.net/Jz3ZA/18/ (см. Пример кода ниже)), вы можете проверить множество браузеров, чтобы получить эффективную базовую линию.
- Chrome: 50K+
- Firefox: 50K+
- Safari (iOS): 50K+
- Internet Explorer 11: не работает от 2,025 до 2,050
- Microsoft Edge: не работает от 2,025 до 2,050
Таким образом, независимо от того, что поддерживают другие браузеры, если вам нужно поддерживать Microsoft Edge или IE11, вам нужно будет оставаться под 2025 символами. Поскольку IE (и, следовательно, я предполагаю, что Edge) исторически имел ограничения длины URL... это также может зависеть от длины вашего базового URL.
function testall(){
var sizes = [10,100,1000,2000,2025,2050,2100,2250,2500,2750,3000,4000,5000,10000, 50000];
for(var i=0;i<sizes.length;i++){
var n = sizes[i];
if(!testhash(n)){
alert("test failed at hash of length: " + n);
return;
}
}
alert("all tests passed");
}
function testhash(n){
var somestring = "#" + makestring(n);
window.location.hash = somestring;
var success = (window.location.hash == somestring);
return success
}
function makestring(n){
var text = "";
var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
for(var i=0;i<n;i++){
text += possible.charAt(Math.floor(Math.random() * possible.length));
}
return text;
}
$("button").on("click", testall);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<button>Test!</button>