Mam widżet interfejsu użytkownika, który należy umieścić w ramce IFRAME, zarówno ze względów wydajności, jak iz łatwością możemy dystrybuować go do witryn stowarzyszonych. Interfejs użytkownika widżetu zawiera wskazówki, które wyświetlają się na wierzchu innej zawartości strony. Zobacz zrzut ekranu poniżej lub go to the site, aby zobaczyć go w akcji. Czy istnieje sposób, aby zawartość z ramki IFRAME pokrywała się z zawartością ramki rodzica?Czy istnieje sposób, aby zawartość z przelewu IFRAME na ramkę nadrzędną?
Odpowiedz
Nie jest to niemożliwe. Ignorując wszelkie historyczne powody, w dzisiejszych czasach byłaby to luka w zabezpieczeniach - np. wiele witryn umieszcza niezaufaną zawartość w elementach iframe (źródło iframe jest innym źródłem, więc nie można zmodyfikować ramki nadrzędnej zgodnie z tą samą zasadą pochodzenia).
Jeśli taka niezaufana zawartość ma mechanizm umieszczania treści poza ramkami elementu iframe, może (na przykład) umieścić "identyczny" element logowania (lub cokolwiek innego) na prawdziwych polach logowania ramki nadrzędnej, a tym samym może ukraść nazwa użytkownika/hasło. Co by było do dupy.
O ile wiem, to nie można zrobić. Dlaczego nie skorzystać z żądania XHR i zamiast tego zapełnić div?
Właśnie to robimy obecnie, ale - jak wspomniano powyżej - jednym z wymogów jest umożliwienie stronom trzecim umieszczenie IFRAME jako widgetu na ich stronach. Obecna implementacja także freeziing UI, ale jestem pewny, że mogę obejść to. –
Możesz po prostu określić interfejs API XHR i zezwolić innym na podłączenie się do niego, ale uznają to za stosowne (umożliwiając im oczywiście wyłączenie skryptów, ale niech tak będzie). – eyelidlessness
Byłoby to bezpieczne tylko wtedy, gdy rzeczywiście ufasz zawartości/widgetowi - zaletą iframe jest to, że efektywnie piaskownicę (dzięki tej samej zasadzie pochodzenia). – olliej
Może to oznaczać, że jest nieodpowiedni w świetle Twoich wymagań lub może nie pomóc (!), Ale może warto sprawdzić UFrame. Jest to rodzaj hybrydy elementów iframe i div, która mogłaby zostać spakowana jako widget (najlepiej byłoby podać klientom tag <script>
, który zasysałby UFrame i odpowiedni znacznik). Nie jestem pewien, czy uda się osiągnąć wymaganą nakładkę, ale jest to warte zabawy. Przepraszam, nie mogę być bardziej konkretny, ale nie jest to coś, czego sam użyłem, po prostu dodałem do zakładek trochę czasu na przyszłe odniesienia.
Jeśli znasz bezwzględną najwyższą wartość, jaką można uzyskać na szczycie narzędzia, możesz utworzyć element div, który jest wysokością zawartości + najwyższą odległością wyświetlaną na ekranie. Wyrównaj element iframe do dolnej części elementu div. upewnij się, że element iframe i div są przezroczyste. następnie zawartość iframe z wskazówką narzędzia powinna zostać wyświetlona. Chociaż ustawia się to na ból głowy, aby upewnić się, że elementy takie jak podświetlanie działają tak samo we wszystkich przeglądarkach.
Nie mogłem znaleźć sposobu, aby zawartość ramki wypłynęła poza ramkę, ale znalazłem sposób na zhakowanie jej, przesuwając etykietkę narzędzia do dokumentu nadrzędnego i umieszczając go powyżej (z- index) element iframe.
Podejście było:
1) znaleźć iframe w dokumencie macierzystym
2) Wyjmij element podpowiedzi skąd jest w DOM i dodać go do dokumentu macierzystego wewnątrz elementu, który zawiera iframe.
3) prawdopodobnie musisz dostosować indeks Z i pozycjonowanie, w zależności od tego, w jaki sposób robiłeś to w pierwszej kolejności.
Możesz uzyskać dostęp do dokumentu nadrzędnego elementu iframe za pomocą parent.document.
jQuery(tooltip).remove(); var iframeParent = jQuery("#the_id_of_the_iframe", parent.document)[0].parentNode; iframeParent.appendChild(tooltip); //adjust z-index, positioning
To nie zadziała, jeśli te dwa dokumenty pochodzą z różnych domen. – keaukraine
Nest aktualna iframe i zasugerował div, wewnątrz iframe nadrzędnej, a następnie spaść w iframe nadrzędnej do 3 stron, co najlepsze z obu światów!
- 1. $ (document) .ready i iframe zawartość
- 2. Javascript Drukuj zawartość iframe tylko
- 3. Czy rozszerzenia do Chrome otwierają ramkę iframe?
- 4. zawartość iframe znika na Firefox
- 5. Czy istnieje sposób zmiany kontekstu na element iframe w konsoli javascript?
- 6. Skaluj kolorową ramkę jQuery dla zawartości iframe?
- 7. Potrzebuję przelewu, aby skrócić z lewej strony, z elipsami
- 8. można zmniejszyć zawartość elementu iframe?
- 9. Niepewna zawartość w iframe na bezpiecznej stronie
- 10. Jak uniknąć zakotwiczeń w elementach iframes, aby przewinąć stronę nadrzędną?
- 11. Czy istnieje sposób, aby anulować TabControl.Items.CurrentChanging?
- 12. Czy istnieje sposób na zbieranie treści z grup na Facebooku?
- 13. Czy istnieje sposób, aby wyczyścić django.db.connection.queries?
- 14. Czy istnieje sposób, aby zignorować odpowiedź formularza?
- 15. Czy istnieje sposób, aby zapobiec zaokrąglaniu stringWithFormat?
- 16. Czy istnieje sposób, aby zleceniowe NSWindow spacjami
- 17. Skopiuj zawartość html z elementu iframe do div (ajax)?
- 18. Czy istnieje sposób pushState() okna nadrzędnego na płótnie na Facebooku?
- 19. Czy istnieje sposób, aby uciszyć rejestrowanie hsqldb?
- 20. Czy istnieje sposób, aby wyświetlić wszystkie trasy na serwerze Hapi
- 21. Czy istnieje sposób, aby przejść dotyka na iPhone?
- 22. Jak skalować zawartość elementu iframe?
- 23. wsteczna przeglądarka działa na zagnieżdżonej ramce przed samą stroną - czy istnieje sposób, aby tego uniknąć?
- 24. Jak usunąć ramkę iframe w IE7?
- 25. Czy istnieje sposób, aby z wdziękiem zmienić szyny secret_key_base?
- 26. Czy istnieje sposób, aby zatrzymać SQL Express 2008 z Idling?
- 27. Czy istnieje sposób, aby usunąć linię informacyjną z wyjścia java.util.logging.Logger?
- 28. Czy istnieje sposób, aby utworzyć konfigurację nunit z argumentami?
- 29. Czy istnieje sposób, aby usunąć cały obiekt z obiektu js
- 30. Czy istnieje sposób, aby powrócić do makra klawiatury z elisp?
Odkryłem jednak, że elementy "