2012-01-26 7 views
6

Występuje w twardym limicie w Internet Explorerze z protokołami aplikacji, które przekraczają 508 znaków. Limit ten nie jest wymuszany w innych przeglądarkach, chrome itp. ...Jaka jest maksymalna długość niestandardowego protokołu url przy użyciu synchronicznych protokołów w przeglądarce Internet Explorer?

Dokumentacja na MSDN (1) wydaje się nie wspominać o maksymalnej dopuszczalnej długości w specyficznej dla programu części URI lub całkowitej długości, w tym schematu.

508 znaków jest znacznie poniżej ogólnych limitów dla adresów URL w IE, zgłoszonych jako 2083 znaków (2).

Czy ktoś wie, czy jest to oczekiwane zachowanie, używam IE8, czy może coś tu jest nie tak?

Referencje:

Odpowiedz

3
508 + some bookkeeping = 512 bytes 

myślę, że przeglądarka, po podzieleniu się protokół, przechowuje je w tymczasowej pamięci buforowej ustalony rozmiar. Dlaczego, nie wiem, a to wygląda na zachowanie, które może się zmienić w przyszłości. Nie bankuj na tym.

Zastanawiam się również, dlaczego potrzebujesz tak długiego protokołu. Nawet GUID ma tylko 36 znaków, gdy są wyrażone w postaci cyfr szesnastkowych plus myślniki.

4

Niedawno wpadłem na ten sam problem i zaproponowałem następujące rozwiązanie. Jeśli spróbujesz przypisać URL bezpośrednio tak:

document.location.href = theUrlWithTheCustomProtocol; 

trafisz na tego błędu limitu 508 znaków i w IE8 dostaniesz błąd JavaScript mówi coś o „obszarze danych przekazany do wywołania systemowego jest za mały."

Aby obejść ten problem, przeszedłem z powyższego kodu przy użyciu JQuery, aby utworzyć ukryty iframe tak:

// Remove old frame 
$('#hiddenIFrame').remove(); 

// Add new one 
$('<iframe />', { 
    'id': 'hiddenIFrame', 
    'name': 'hiddenIFrame', 
    'src': theUrlWithTheCustomProtocol, 
    'style': 'display: none;' 
}).appendTo("body"); 

ten omija limitu znaków IE 508 i to przy użyciu document.location.href rozwiązanie działa dla IE, FireFox, Chrome i Safari.

+0

W moich testach zwiększa to limit do 2046 znaków w IE 9-11. (Co ciekawe, ma 2047 znaków w IE 8.) Jest to tylko wzrost 4x, ale może być wystarczający w niektórych sytuacjach. Świetne znalezisko. –

Powiązane problemy