Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [HTML][CSS][JavaScript]TD inline-block
Forum PHP.pl > Forum > Przedszkole
atom90
Witam.

Mam pewien problem. Importuje dokument z pliku do iframe. Wyświetla mi tam rozkład w elementach table

Wszystkie godziny odjazdu sa w komorkach, w jednym <tr> Lecz na TD dane jest display:inline-block co powoduje ze ladnie przerzucane są elementy do nowej lini. Obszar roboczy tabeli to 600px. Więc reszta jak wykracza poza tabele jest od nowej lini.

Wszystko dobrze działa, lecz niestety nie na oprogramowaniu Mac (Safari czy przehladarki na iphonie). Jest jakis knif jak to zrobić aby poprawnie działało również na Apple....
bostaf
A wrzuć przykładowy fragment tabeli, tak żeby było widać cały styl na table, tr i td.
atom90

http://imgur.com/a/lF61O

Wszystkie przegladarki i na androidzie:


IOS:

Czy takie coś wystarczy?
bostaf
Nie. Sorki, miałem na myśli żebyś wrzucił fragment KODU tabeli, razem z klasami css. Albo spreparuj na https://jsfiddle.net/.
atom90
https://jsfiddle.net/b1xdn6x8/1/

tyle ze tutaj symuluje poprawnie
bostaf
U mnie też działa, ale ja Safari na Windowsie testuję.
Udało mi się to popsuć, jak usunąłem "<!DOCTYPE html>" - w Chromie było nadal OK, ale w Safari i IE się posypało.
Może ktoś kto ma możliwość potestowania na Macu Ci pomoże...
trueblue
Na Safari 9.1, 10.1 oraz iPhone 5 i 6, jest ok.
atom90
Tutaj Nie bedziecie mieli ok:
http://www.mzk.pl/rozklady_new/0001/
...

Kliknijcie obojetnie jaki przystanek. np szpital wojewodzki. Zobaczycie ze w safari bedzie w jednej lini.
bostaf
Tak na pierwszy rzut oka to właśnie brakuje deklaracji doctype w tym co jest ładowane do iframe'a - we w.htm i wszystkich rozkładach 0001t0??.htm
Spróbuj tam dodać <!DOCTYPE html>, zobaczymy czy pomaga.
atom90
Hmm. Zastanawiam się jak tam dodac. Fizycznie dodałem sprawdziłem faktycznie smile.gif masz racje!
Tylko niestety dodawanie reczne nie jest mozliwe. Bo za duzo tych plików. Zreszta jakoś dziwnie gdy otwieram to zamienia polskie znaki. na (?)

Jedyna opcja to dodanie !doctype za pomoca jquery do iframe. tylko jak ...

w taki sposob dodaje style do iframe:
Kod
$(".rozklad iframe").on('load',function(){
     $(".rozklad iframe").contents().find("head").append('<link href="http://www.mzk.pl/wp-content/themes/mzk-blue/inc/rozklad.css" id="rozklad" rel="stylesheet" type="text/css">');
   });


ale nie wiem jak doctype dodac w podobny sposob

bostaf
Nie sprawdzałem, ale spróbuj z prepend().
Może coś w rodzaju
Kod
$(".rozklad iframe").contents().find("html").prepend("<!DOCTYPE html>");
atom90
Właśnie nie działa :/
trueblue
W jaki sposób importujesz plik do iframe?
atom90
W wordpresie mam stworzony custom post i wklejam iframe z odpowiednia linia
np:
Kod
<div style="overflow:auto;-webkit-overflow-scrolling:touch"><iframe src="http://www.mzk.pl/rozklady_n/0029/w.htm" width="100%"
onload="this.style.height=this.contentDocument.body.scrollHeight +'px'; window.parent.parent.scrollTo(0,0);"
></iframe></div>
bostaf
Ja tak czy inaczej optowałbym za dodaniem tej deklaracji w każdym pliku. Jak się użyje odpowiedniego narzędzia (np. sed) to ilość przestaje mieć znaczenie. Jeśli nie śmigasz w Linuxie to możesz zainstalować podstawową wersję Cygwina i bez problemu wygooglujesz jak dopisać jeden wiersz w wielu plikach. A jak nie wygooglujesz to na tym forum ktoś Ci podpowie.

Ale jeśli chodzi o dodanie deklaracji dynamicznie, a prependowanie nie działa, to może tak:
1. Po załadowaniu iframe'a pobrać jego zawartość do zmiennej,
2. Wpisać do iframe'a doctype,
3. Dopisać do iframe'a wcześniej pobraną zawartość.

No i nadal masz trzecią opcję: wymyślić css, który Safari zinterpretuje pomimo braku deklaracji typu dokumentu. Wcześniej nie mogłeś tego rozgryźć, bo nie wiedziałeś gdzie jest problem. Ale teraz skoro już wiesz...
atom90
Kod
$(".rozklad iframe").on('load',function(){
  var iframe= $(".rozklad iframe");
});


O to chodzi?

w zmiennej mam teraz obiekt:
Object { 0: HTMLDocument → 0014t001.htm, selector: "", length: 1, prevObject: Object, context: HTMLDocument → 0014 }

I nie mam bladego pojecia co dalej .... jak dopisac do tego
bmati666
Jeśli problem z safari można spróbować w css: -webkit-appearance: none;
bostaf
Cytat(atom90 @ 7.06.2017, 14:49:42 ) *
Kod
$(".rozklad iframe").on('load',function(){
  var iframe= $(".rozklad iframe");
});


O to chodzi?

w zmiennej mam teraz obiekt:
Object { 0: HTMLDocument → 0014t001.htm, selector: "", length: 1, prevObject: Object, context: HTMLDocument → 0014 }

I nie mam bladego pojecia co dalej .... jak dopisac do tego

Chodzi o to, żeby wyciągnąć tylko html.
[JAVASCRIPT] pobierz, plaintext
  1. var iframeHTML = $(".rozklad iframe").contents().find("html").html();
[JAVASCRIPT] pobierz, plaintext

To będzie zawierało czysty tekst. Teraz do tego, na początku trzeba dopisać doctype:
[JAVASCRIPT] pobierz, plaintext
  1. var nowyHTML ="<!DOCTYPE html>" + iframeHTML;
[JAVASCRIPT] pobierz, plaintext

I wrzucić do do iframe'a. Ja nie znalazłem sposobu na nadpisanie całej zawartości iframe'a za pomocą jQuery, ale szybko znalazłem jak zrobić to czystym javascriptem. Poszukaj - nie powinieneś mieć problemu.

PS. Powtarzam, że mi się taki sposób zupełnie nie podoba. Dużo więcej się nauczysz jak spróbujesz jakimś automatem dopisać tą linię tekstu we wszystkich plikach.
atom90
bostaf jest postęp!

Kod
function explode2(){
$(".rozklad iframe").on('load',function(){
     $(".rozklad iframe").contents().find("head").append('<link href="http://www.mzk.pl/wp-content/themes/mzk-blue/inc/rozklad.css" id="rozklad" rel="stylesheet" type="text/css">');
     var importIframe= $(".rozklad iframe").contents().find("html").html();

      importIframe="<!DOCTYPE html>"+importIframe;
    // console.log(importIframe);
     var iframe = document.getElementById('iframeID');
       iframe = iframe.contentWindow || ( iframe.contentDocument.document || iframe.contentDocument);
       iframe.document.open();
       iframe.document.write(importIframe);
       iframe.document.close();
       console.log(importIframe);


   });



}



Tak aktualnie wyglada funkcja.
Wszystko prawie ok, ale jest pewien problem bo sciezki do laczy sa niepoprawne

Powinny byc takie jak do adresu głównego:
rozklady_n/0014/w.htm

a prowadzą do:
rozklady_new/0014/w.htm

Czyli pobiera sciezke z miejsca, w którym jestesmy, a nie z wewnecznego dokumentu iframe.

skąd taka zmiana ?
bostaf
Cytat(atom90 @ 8.06.2017, 13:43:50 ) *
Wszystko prawie ok, ale jest pewien problem bo sciezki do laczy sa niepoprawne

Powinny byc takie jak do adresu głównego:
rozklady_n/0014/w.htm

a prowadzą do:
rozklady_new/0014/w.htm

Czyli pobiera sciezke z miejsca, w którym jestesmy, a nie z wewnecznego dokumentu iframe.

skąd taka zmiana ?

Nie wydaje mi się, że to ma związek z tym przekształcaniem. Może testujesz nie tam gdzie Ci się wydaje? smile.gif Na http://www.mzk.pl/rozklady_new/0001/ nie widzę zmian...
atom90
w 14 jest nadany tylko ID na iframe.

Nie umialem się inaczej odnieść do elementu w samym js. Więc po przez ID

na innych numerach nie jest dodany id jeszcze
bostaf
Cytat(atom90 @ 8.06.2017, 17:52:28 ) *
w 14 jest nadany tylko ID na iframe.

Nie umialem się inaczej odnieść do elementu w samym js. Więc po przez ID

na innych numerach nie jest dodany id jeszcze

To nie ma związku z pierwotnym problemem. Zaznacz ten wątek jako rozwiązany i otwórz nowy.
atom90
Cytat(bostaf @ 1.06.2017, 15:48:23 ) *
Tak na pierwszy rzut oka to właśnie brakuje deklaracji doctype w tym co jest ładowane do iframe'a - we w.htm i wszystkich rozkładach 0001t0??.htm
Spróbuj tam dodać <!DOCTYPE html>, zobaczymy czy pomaga.


Zamykam temat.

Problem jak stwierdził bostaf jest w samym doctype, który nie jest zdefiniowany w dokumentach


To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.