Chciałbym użyć atrybutu zastępczego HTML5 (można go znaleźć w kodzie w biuletynie pod numerem Thought Results). Ale kiedy używam starszych przeglądarek, oczywiście nic nie renderują. Do naśladowania mogę użyć JavaScript, ale potem nie powinienem go używać i robi się to w starym stylu. Jak mogę mieć zarówno atrybut zastępczy HTML5, a jednocześnie symulować go dla starszych przeglądarek?jak używać atrybutu zastępczego HTML5 z myślą o zgodności wstecznej?
Odpowiedz
Można wykryć czy przeglądarka obsługuje atrybut:
http://diveintohtml5.info/detect.html#input-placeholder
function supports_input_placeholder() {
var i = document.createElement('input');
return 'placeholder' in i;
}
Jeśli tak, nic nie robić. Jeśli nie, możesz użyć JS, aby pobrać wartość zastępczą, a następnie wstawić ją do pola zgodnie z oczekiwaniami (prawdopodobnie jako wartość domyślną), a następnie dodać odpowiednie interakcje, aby symulować zachowanie symboli zastępczych HTML5.
@marcgg napisał świetną wtyczkę zastępczą JQuery, która zasadniczo powiela funkcje zastępczą dla tych przeglądarek, które jej nie obsługują.
https://github.com/marcgg/Simple-Placeholder
Szukałem przez wiele wtyczek zastępczych przed osiedleniem się na ten jeden i działa świetnie do tej pory. Pierwotnie znalazł w odpowiedzi na niniejsze podobnym pytaniem:
Polecam używanie Modernizr wykryć tę funkcję.
if (Modernizr.input.placeholder) {
// your placeholder text should already be visible!
} else {
// no placeholder support :(
// fall back to a scripted solution
}
Jeśli nie chcesz korzystać z tej biblioteki, możesz użyć następującego kodu.
function supports_input_placeholder() {
var i = document.createElement('input');
return 'placeholder' in i;
}
odniesieniu do awaryjne wsparcie, jeśli używasz jQuery można użyć Simple Placeholder, który miał swój początek tutaj w StackOverflow.
- 1. Jak używać atrybutu zastępczego z Html.EditorFor?
- 2. Integrowanie Kiosku bez przerywania wstecznej zgodności
- 3. Android - Z myślą o niestandardowej akcji głosowej
- 4. Dodawanie atrybutu zastępczego HTML5 do elementów wejściowych formularza w wersji 3.0 3.0
- 5. html5 - używanie sformatowanego symbolu zastępczego dla danych wejściowych naukowych
- 6. jQuery z dostępem do atrybutu danych html5
- 7. Jak używać HTML5 Local Storage z Ember.js?
- 8. Jak zbudować bibliotekę statyczną o maksymalnej zgodności w systemie iOS?
- 9. Zmień kolor symbolu zastępczego HTML5 wejścia za pomocą wbudowanego CSS
- 10. Jak czytelnie oddzielasz kod dla kompatybilności wstecznej z głównego kodu?
- 11. Ruby on Rails: jak używać domyślnego obiektu zastępczego w select_tag?
- 12. Nadmiarowy komunikat o błędzie zgodności Swift 2
- 13. Kiedy należy używać atrybutu KnownType?
- 14. jak używać atrybutu href w szablonach django
- 15. Wykrywanie obsługi atrybutu piaskownicy iframe HTML5
- 16. HTML5 Jak pominąć nawigację, gdy nazwa atrybutu jest nieaktualna
- 17. Pytanie atrybutu roli HTML5 i XHTML
- 18. Kiedy należy używać html5 sessionStorage?
- 19. Czy HTML5 wymaga atrybutu działania dla formularzy?
- 20. Zmiana nazwy funkcji z zachowaniem kompatybilności wstecznej
- 21. Jak można dokonać inżynierii wstecznej pliku binarnego?
- 22. jquery: uzyskaj wartość niestandardowego atrybutu
- 23. Jak połączyć wyrażenie if/else z translacją kątową wewnątrz atrybutu?
- 24. Jak działa iframe w HTML5 bez atrybutu sandbox?
- 25. Jak bezpieczne jest proguard przeciwko inżynierii wstecznej?
- 26. lokalizacja obiektu zastępczego z innej usługi
- 27. Rozważając rozpoczęcie inżynierii wstecznej/demontaż
- 28. Magento - Pobieranie produktów o określonej wartości atrybutu
- 29. Mylić o CursorLoaders i używać ich z niestandardowym SQLiteOpenHelper
- 30. Jak używać zmiennej jako atrybutu obiektu w szynach?
To działało. Po prostu nie rozumiem elementu 'return 'placeholder' in i;' part. Co to technicznie robi? Co to znaczy? –
Operator 'in' sprawdza, czy obiekt (w tym przypadku obiekt' HTMLInputElement') ma daną właściwość. Ponieważ przeglądarki implementujące atrybut 'placeholder' również dodają właściwość' placeholder' do interfejsu 'HTMLInputElement', jest to efektywny test obsługi' placeholder'. – Domenic
@Diogo twoja edycja jest całkowicie nową odpowiedzią. Zamiast edytować tę odpowiedź, utwórz nową. –