![]() |
![]() ![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 20 Pomógł: 0 Dołączył: 24.11.2007 Ostrzeżenie: (0%) ![]() ![]() |
Na potrzeby problemu, załóżmy że mamy dwie strony, przykładowo:
Strona1.html oraz Strona2.html Strona1.html to strona która znajduje się gdzieś daleko i do której nie ma się dostępu oraz na której zawarte są pewne informacje. Strona2.html to strona którą możemy dowolnie edytować i w której w polu <iframe> ma znaleźć się fragment Strona1.html, ale tak by był widoczny TYLKO sam obrazek - bez zawartości "bla bla" czy "cium cium". Dotychczasowe rozwiązanie problemu było proste - wystarczyło odpowiednio ustawić w CSS wielkość pola oraz marginesy dla <iframe> i pokazywał się tylko sam obrazek. Jednak jeżeli na Strona1.html, zmieniła się wielkość lub ilość tekstu w polu <div id="bla"> (lub pojawiał się jakiś dodatkowy element przed obrazkiem) to położenie obrazka na stronie się zmieniało i statycznie ustawione marginesy w CSS dla obrazka wyświetlały błędny fragment strony. Pytanie teraz jest jakie, czy jest jakiś sposób, nie koniecznie tylko związany z samym CSS, dzięki któremu marginesy na <iframe> mogłyby by zmieniać się w zależności od położenia obrazka. Albo może istnieje jakiś inny sposób? Oczywiście obrazek to tylko prosty element dla tego przykładu, więc nie piszcie że można skopiować adres obrazka lub zgrać go na własny dysk ;-) Chodzi mi o jakąś skuteczną metodę, dzięki której będzie można wyświetlać dynamicznie zmieniający się dany fragment strony, opierając się na np. ID elementów znajdujących się na tej nieedytowalnej stronie. Może jest jakaś inna metoda niż statyczne marginesy dla <iframe>? Parsowanie w PHPie też odrzucamy, całość raczej musi wykonać się po stronie okna przeglądarki... Ten post edytował poldo 1.07.2011, 15:46:48 |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 1 429 Pomógł: 195 Dołączył: 6.10.2008 Skąd: Kraków/Tomaszów Lubelski Ostrzeżenie: (0%) ![]() ![]() |
Skoro to sam obrazek to nie można zwyczajnie go pobrać? Jeżeli mu się jednak adres zmienia to można zawsze poradzić sobie za pomocą curl/file_get_contents czy tam innych cudów. O to biega?
-------------------- O! Zimniok :P
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 20 Pomógł: 0 Dołączył: 24.11.2007 Ostrzeżenie: (0%) ![]() ![]() |
Powtórzę:
Oczywiście obrazek to tylko prosty element dla tego przykładu, więc nie piszcie że można skopiować adres obrazka lub zgrać go na własny dysk ;-) Chodzi mi o jakąś skuteczną metodę, dzięki której będzie można wyświetlać dynamicznie zmieniający się dany fragment strony, opierając się na np. ID elementów znajdujących się na tej nieedytowalnej stronie. Może jest jakaś inna metoda niż statyczne marginesy dla <iframe>? Parsowanie w PHPie też odrzucamy, całość raczej musi wykonać się po stronie okna przeglądarki... Nie chodzi o obrazek tylko o pewien zaawansowany element, aby nie robić niepotrzebnie bałaganu dla tego przykładu przyjęliśmy że jest to obrazek, ale można przyjąć że jest to tabela czy cokolwiek innego. I tak jak pisałem wszelkie parsowanie oraz CURLe w PHPie odpadają... Ten post edytował poldo 1.07.2011, 15:49:39 |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 1 527 Pomógł: 438 Dołączył: 28.06.2011 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Odpowiedź jest prosta - nie da się
Dlaczego? Strona A na której jest IFRAME ze stroną B nie ma dostępu do tej strony z poziomu JS, CSS czy czegokolwiek - nie da się więc określić pozycji elementu, który ma być widoczny w iframe. PHP bez problemu sobie z tym poradzi ale CSS/JS/HTML nie ma szans - przykro mi. EDIT: Jak chcesz (o ile to jest w miarę legalne) to napisz mi co i z jakiej strony chcesz wyciągnać, może da się trafić na jakąś prawidłowość ![]() Ten post edytował Sephirus 1.07.2011, 18:00:45 -------------------- If you're good at something, never do it for free.
Potrzebujesz skryptu JS lub PHP - szukasz kogoś kto przetestuje twoją aplikację pod względem bezpieczeństwa? Szybko i solidnie? Napisz ;) Mój blog - Jak zwiększyć wydajność front-endu - O buforowaniu wyjścia w PHP słów kilka... |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 348 Pomógł: 26 Dołączył: 8.10.2008 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
Nie czytałem całości szczerze mówiąc ale próbowałeś w taki sposób aby najpierw pobrać stronę:
A potem może coś takiego: Ten post edytował Adi32 1.07.2011, 18:09:49 -------------------- Wolałem języki z rodziny C ale poszedłem na łatwizne...
|
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 1 798 Pomógł: 307 Dołączył: 13.05.2009 Skąd: Gubin/Wrocław Ostrzeżenie: (0%) ![]() ![]() |
A za pomocą php, to albo wyrażenia regularne, albo poruszanie się bezpośrednio po DOM, jeżeli już daną stronę pobierzesz. Jako że DOM i wyrażenia się dość długo pisze, dobrą biblioteką jest phpQuery, którym po elementach strony możesz się poruszać jak w jQuery, wiele razy tego używałem
![]() EDIT: zapomniałem, dzięki takiemu zabiegowi nie musisz używać ramek ![]() Ten post edytował by_ikar 1.07.2011, 21:27:30 |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 20 Pomógł: 0 Dołączył: 24.11.2007 Ostrzeżenie: (0%) ![]() ![]() |
Powyższe metody się niestety nie sprawdzą, ponieważ Strona1.html musi być wczytana przez przeglądarkę z powodu zabezpieczeń. Jeżeli przepuścimy ją przez PHP-a to ten element, który chcemy wyświetlić nie pokaże się.
Może inaczej, dla przykładu przyjmijmy że Strona1.html to np.: http://www.tvp.pl/rozrywka/festiwale-i-kon...u-w-opolu/60527 A na Strona2 zależy nam na odtworzeniu tylko samego filmu, którego położenie się zmienia, bo na stronie np. wyświetlają się w górnej części reklamy o różnych wymiarach. |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 1 675 Pomógł: 286 Dołączył: 15.06.2009 Skąd: Wieliczka Ostrzeżenie: (0%) ![]() ![]() |
tworzysz sobie ramkę o wymiarach takich jak ten film, ładujesz do ramki skrypt.php, który pobierze kod strony i doklei do niego kawałek .js
ten kawałek .js powinien wyliczyć pozycję filmu względem okna a następnie odpowiednio ustawić marginesy stronie, tak, żeby film znalazł się w Twojej "ramce" to chyba najbardziej łopatologiczny sposób, jeżeli chcesz ładować całą stronę i pokazać tylko jakiś jej fragment, prościej by było file_get_contents + preg_match ![]() |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 20 Pomógł: 0 Dołączył: 24.11.2007 Ostrzeżenie: (0%) ![]() ![]() |
tworzysz sobie ramkę o wymiarach takich jak ten film, ładujesz do ramki skrypt.php, który pobierze kod strony i doklei do niego kawałek .js ten kawałek .js powinien wyliczyć pozycję filmu względem okna a następnie odpowiednio ustawić marginesy stronie, tak, żeby film znalazł się w Twojej "ramce" to chyba najbardziej łopatologiczny sposób, jeżeli chcesz ładować całą stronę i pokazać tylko jakiś jej fragment, prościej by było file_get_contents + preg_match ![]() Próbowałem, ale tak jak pisałem... ...Strona1.html musi być wczytana przez przeglądarkę z powodu zabezpieczeń. Jeżeli przepuścimy ją przez PHP-a to ten element, który chcemy wyświetlić nie pokaże się... Czyli wszystko musi być wykonane po stronie przeglądarki ;/ Ten post edytował poldo 4.07.2011, 15:18:32 |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 26.04.2025 - 04:27 |