2014-12-10 8 views
11

Chcielibyśmy mieć większą kontrolę nad tym, gdzie i jak ustawiamy pasek narzędzi tinymce. Znaleźliśmy tę opcję fixed_toolbar_container, która rozwiązuje wiele problemów, ale przynosi nam problem anoying. Dokumenty mówią, że fixed_toolbar_container (http://www.tinymce.com/wiki.php/Configuration:fixed_toolbar_container) może być używany do posiadania stałego paska narzędzi. Ale naprawdę chcielibyśmy użyć go jako absolutnego, abyśmy mogli ustawić go względem kontenera.Podmenu TinyMce nie trzyma się paska narzędzi podczas korzystania z fixed_toolbar_container i pozycji bezwzględnej

Stworzyłem skrzypce JS, aby zademonstrować problem: http://jsfiddle.net/ronfmLym/2/. Po otwarciu paska narzędzi, klikając tekst, pasek narzędzi zostanie umieszczony absolutnie. Kiedy otworzysz podmenu (to znaczy klikając "plik") otworzy się podmenu. Teraz po rozpoczęciu przewijania podmenu nie będzie się trzymać na pasku narzędzi. Dzieje się tak, ponieważ te podmenu uzyskują klasę mce-fixed, ponieważ ustawiamy właściwość fixed_toolbar_container.

<div class="element"> 
    <div class="toolbar-container"></div> 
    <div class="content"> 
     <p>Text</p> 
    </div> 
</div> 

Czy istnieje sposób, aby podmenu trzymać się paska narzędzi podczas pozycjonowania bezwzględnego i przewijania? Pamiętaj, że przełączamy się na ustalone położenie, gdy pasek narzędzi schodzi z ekranu.

Pomyśleliśmy, że możemy to naprawić, modyfikując element kontenera w podmenu za pomocą poniższego fragmentu kodu i nadpisując górną pozycję podmenu i ustawiając pozycjoner na absolutny za pomocą css. Ale wydaje się to zepsuć etykietki narzędzi i tinymce nie przelicza "lewej" właściwości css podmenu, więc pozycja jest nadal wyłączona.

tinymce.ui.Control.prototype.getContainerElm = function() { 
    return document.getElementById('toolbar-container'); 
}; 

Jedyna odpowiedź pytanie udało mi się znaleźć na stackoverflow było to jedno: TinyMCE push down submenus using fixed_toolbar_container, nie ma odpowiedzi.

+0

Witam, mam ten sam problem Czy go rozwiązać – Charles

Odpowiedz

2

Próbowałem owijać pasek narzędzi w div i używając position:relative;, aby spróbować zhakować to razem, ale tym razem nie współpracował.

Wygląda na to, że pasek narzędzi faktycznie rozlicza swoją pozycję w momencie kliknięcia. Więc jedynym konfliktem jest, jeśli otwarty pasek narzędzi to position:absolute, a następnie zmienia się na position:fixed lub odwrotnie.

Najlepszym [instrukcja] Najprościej byłoby do wywołania funkcji w tym samym czasie, aby zmienić położenie paska narzędzi:

  1. wykrywa, czy jakieś menu są otwarte.
  2. Zmienia pozycję paska narzędzi.
  3. Powoduje ponowne otwarcie menu, które było otwarte.

Leniwe (zniechęcające) rozwiązanie polegałoby na zamknięciu wszystkich podmenu za każdym razem, gdy zmieni się pozycja. Spowoduje to poprawienie układu, ale będzie wymagać, aby użytkownik kliknął ponownie, aby przywrócić menu. .?

Niestety to nie jest panaceum odpowiedź :(

+0

kod, aby ponownie obliczyć pozycjonowanie jest więc obecny w ich bazy kodu Pytanie brzmi.: czy istnieje funkcja (publiczna) w API, aby to zrobić? Jeśli tak, możemy napisać niestandardowy motyw, który zarejestruje kilka dodatkowych zdarzeń (przewiń co najważniejsze), a następnie wykona tę metodę –

+0

Czy myślisz, jak można to zrobić? ? –

+0

Niestety, nie.Wydaje się, że wszystkie fora zalecają utworzenie nowego edytora lub zainicjowanie starego, jeśli trzeba go przenieść: "Przeniesienie edytora spowoduje jego złamanie, albo utwórz nowe za każdym razem, albo możesz ponownie zainicjować edytor, czyli nieco więcej To powinno się zacząć.www.tinymce.com/forum/viewtopic.php?pid=114742 Upewnij się, że czytasz całą drogę na dół.Nie musi być detektor zdarzeń lub zegar przed ponownie zainicjujesz przy użyciu tego samego identyfikatora. " –

Powiązane problemy