2010-07-26 15 views
5

Mam element img w moim DOM. Na podstawie działania użytkownika obliczam adres URL obrazu i zmieniam atrybut src elementu obrazu (przy użyciu jQuery). Nowy obraz ma inny rozmiar niż stary obraz. Działa to dobrze w Safari, ale IE nie zmienia rozmiaru ekranu dla rozmiaru nowego obrazu. Mam obsługę .load na zmianie src (w której dokonuję pewnych zmian w klasie elementu img) ... gdybym wiedział, jak uzyskać dostęp do rzeczywistego rozmiaru obrazu, mógłbym ustawić właściwości wysokości i szerokości elementów img. Czy gdzieś te wartości są dostępne? Jeśli nie, czy jest jakiś inny sposób wyświetlania obrazu w jego nowym rozmiarze?Zmiana źródła znacznika obrazu (img) nie zmienia rozmiaru na IE

Odpowiedz

0

chciałbym zbadać inne rozwiązania, ale można rzeczywiście uzyskać dostęp do tych informacji bezpośrednio

var myImage = new Image(); 
myImage.src = $("image selector goes here").attr('src'); 
myImage.onload = function() { 
    alert(myImage.width + "," + myImage.height); 
} 
+1

Dzięki za sugestię, ale niestety kiedy * CHANGE * src obrazem i załadować obraz nowego rozmiaru, element img nadal raportuje szerokość i wysokość wartości początkowych, a nie nowo załadowany obraz (na IE, to znaczy, jak powiedziałem, obraz jest zmieniany przez Safari). – Zhami

+0

Spróbuj wczytać obraz bezpośrednio z adresu url, w przeciwieństwie do metody 'attr ('src'). Więc coś jak 'myImage.src =" http://example.com/awesome.gif "' następnie sprawdź szerokość. Nie rozumiem, jak mogłaby ona zgłosić tę samą szerokość, ponieważ nie powinna tego wiedzieć. Jest to rodzaj bólu, ponieważ wysyła dwa żądania do serwera dla obrazu, ale nie powinno być problemu, jeśli istnieje buforowanie. –

+0

Podejrzewam, że mechanizm renderujący wykonuje układ z pierwszym obrazem. Kolejne ładunki obrazu nie wymuszają przekazywania. Przepisałem całe moje podejście, aby uniknąć tego problemu. – Zhami

1

miałem ten sam problem, ale zadbał o niego.

$("#img").removeAttr("height").removeAttr("width").attr("src", newsrc); 
+0

Nie widzę, jak to by działało. Popraw mnie, jeśli się mylę, ale z tego, co widzę, wysokość i szerokość nie są atrybutami DOM - styl jest jednak. Usunięcie "stylu" działa w Chrome, zobacz moją odpowiedź. – tronbabylove

3

pracuję w Chrome, nie IE, ale miałem ten sam problem i pomyślałem, że podzielę się dla nikogo, że natknęła się na to pytanie. Rozwiązałem to przez usunięcie atrybutu "style" z obrazu przed zmianą źródła, tj .:

myImg.removeAttribute ('styl') setAttribute ('src', newsrc.);

+0

działa jak urok. –

Powiązane problemy