2016-02-09 44 views
9

Mam problem z przeglądarką Dokumentów Google, która powoduje koszmar, ponieważ ma miejsce tylko sporadycznie. Szukam wskazówek, jak sprawić, aby zawartość w ramce iframe ładowała się za każdym razem bez problemu, tak jak powinna.Przeglądarka Dokumentów Google czasami nie ładuje treści w iframe

Kroki prowadzące do odtworzenia 1) Ta strona jest podstawową stronę HTML z tagu H1 i iframe zawierającej łącze do pliku PDF na tym samym serwerze

http://bit.ly/1mqbuf7

2) Podczas ładowania strony , dokument PDF będzie ładowany w iframie w 60% przypadków.

3) Jeśli uderzysz odświeżenie około 10 razy, przynajmniej raz się nie pojawi. Google zwraca najpierw 307 (co też robi, gdy działa), a następnie zwraca 204 - bez treści. Kiedy to działa, zwraca 200, z treścią widzianą w przeglądarce.

Staram się zrozumieć, dlaczego robi to tylko przez pewien czas bez widocznych błędów. Zostało to przetestowane i nie powiodło się w Google Chrome v 48.0.2564.103 (PC) i Internet Explorer Edge v25.10586 (PC) z takimi samymi wynikami i częstością awarii.

Wszelkie wskazówki będą mile widziane.

+1

Dotyczy podobnych problemów już dziś. Opublikowano nowe pytanie: http://stackoverflow.com/questions/40414039/google-docs-viewer-returning-204-responses-no-longer-working-alternatives –

+0

Dla mnie ten sam problem. Niesamowity błąd. Próbowałem wszystkiego bez powodzenia. – Garavani

Odpowiedz

0

Uważam, że problem występuje z powodu przekroczenia limitu czasu, który ma dokument. Zasadniczo, jeśli ładowanie trwa zbyt długo, zatrzymuje się i powoduje błąd. Dlaczego ładuje 60% pliku, a następnie zatrzymuje się poza mną. Spróbuj zmniejszyć o połowę długość elementu iframe i zobaczyć, czy problem nadal występuje, a jeśli nie, skontaktuję się z Google i zapytam go o to.

0

To nie rozwiązuje twojego problemu per se, ale ponieważ miałem ten sam problem iw końcu udało mi się znaleźć akceptowalne rozwiązanie, myślałem, że je udostępnię.

var $docViewer = $(`<iframe src="${newValue}" height="100%" width="100%"></iframe>`); 
//If using modern browser, use and embed object 
if (window.chrome || typeof (window.mozInnerScreenX) != "undefined") 
    $docViewer = $(`<object width="100%" height="100%" data="${newValue}" type="application/pdf"> 
        <embed src="${newValue}" type="application/pdf"> 
         <p>This browser does not support PDFs.Please download the PDF to view it: <a href="${newValue}">Download PDF</a>.</p> 
        </embed> 
       </object>`); 
//Add the new viewer 
$docViewer.appendTo($("#invoicePreview")); 

Zasadniczo użyć embed jeśli nowoczesną przeglądarkę, a gviewer jeśli nie ma. Obiekt osadzania zachowuje się identycznie jak przeglądarka do przeglądarek Google, działa w 100% przypadków (nie ma nieudanych ładunków), ale ponieważ nie jest obsługiwana przez IE i/lub urządzenia mobilne z niższej klasy, użyj do tego przeglądarki Google Doc ... Postępowe ulepszenia, jak sądzę.