2012-01-22 16 views
9

Mam więc element iframe i przesyłam przez niego pliki, więc moje pytanie brzmi: jak mogę to zatrzymać w trakcie ładowania? Próbowałem zmienić src z funkcją jquery attr(), ale nie zrobiłem nic dobrego, myślę o usunięciu całego elementu iframe za pomocą js, ale spowodowałoby to inne problemy i nie jestem nawet pewien, czy to zadziała. Czy są inne sposoby na zrobienie tego?Zatrzymaj iframe od ładowania

Moje następne pytanie to, czy można ukryć wskaźniki ładowania, aby nie mylić użytkowników, że strona się ładuje, czy coś.

Odpowiedzi takie jak należy użyć flasha lub innych rzeczy nie będą akceptowane, już zrobiłem wszystko z iframe, po prostu muszę zrobić te 2 rzeczy.

Oto mój kod iframe:

<iframe onload="file_uploaded()" class="iframe" src="user/upload_image/" name="iframeTarget" ></iframe> 
+1

Czy próbowali zmienić src użyciem' docu ment.location'? –

+0

@michielvoo możesz być bardziej szczegółowy, próbowałem to zrobić tak jak to 'document.getElementById ('myId'). Location =" # "' ofc dałem moje iframe id 'myId' ale to nie zadziałało – Linas

+1

Powinien to być "document.getElementById (" myId "). Document.location'. I nie sądzę, że "#" "zadziała. Musisz przejść do innej lokalizacji, aby anulować operację wewnątrz elementu iframe, ale '# 'jest po prostu nienazwaną kotwicą wewnątrz bieżącej strony. Ale ogólnie rzecz biorąc, lepiej byłoby skorzystać z odpowiedzi podanej poniżej przez Ricka Kuipersa. –

Odpowiedz

16

wierzę następujących odpowiedzi na pytanie: https://stackoverflow.com/a/2207589/1157493

Dla Firefox/Safari/Chrome można użyć window.stop():

window.frames[0].stop() 

Dla IE można zrobić to samo z document.execCommand ('Stop'):

window.frames[0].document.execCommand('Stop') 

rozwiązania cross-browser można użyć:

if (navigator.appName == 'Microsoft Internet Explorer') { 
    window.frames[0].document.execCommand('Stop'); 
} else { 
    window.frames[0].stop(); 
} 

Jeśli chcesz iframe, aby przejść do innej strony można próbować przekierować go do „about: blank "

+0

Dzięki temu działało , jak mogę usunąć ten denerwujący wskaźnik ładowania, aby użytkownik nie widział ładowania się tej strony? – Linas

+0

Czy możesz wyjaśnić, o którym wskaźniku ładowania mówisz? Jeśli mówimy o kursorach, to używanie rozwiązania CSS 'cursor: default;' rozwiązałoby to. –

+0

Nie mówię o wszystkich rzeczach, które pokazują, że strona jest ładowana na przykład w firefoxie w prawym dolnym rogu znajduje się pudełko, które pokazuje, że wszystkie elementy są ładowane dobrze, wiesz co mam na myśli ... chcę to zrobić Wyglądałoby na to, że używam ajax, ale nie jestem w rzeczywistości – Linas

6

działa to dla mnie (IE, Chrome, FF, Opera):

$iframe.attr('src','about:blank'); 
+2

jest to dobre rozwiązanie, gdy nie masz nic wspólnego ze stroną i adresem URL, a ramka (iframe) znajduje się w innej domenie. ** czysta wersja js: ** 'document.getElementsByTagName ('iframe') [0] .src =" about: blank ";' pamiętaj, nie możesz użyć 'frames [0]', ponieważ daje ci to 'window' wewnątrz elementu iframe, a nie element iframe na stronie z atrybutem' src'. – Unicornist

Powiązane problemy