1. Odpowiedź na główne pytanie
Skrypt $(window).height()
działa dobrze (pokazuje wysokość rzutni, a nie dokument z przewijaną wysokością), ALE musi poprawnie wstawić znacznik doctype w dokumencie, na przykład następujące typy dokumentów:
W przypadku HTML 5:
<!DOCTYPE html>
W przypadku przejściowego HTML4:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
Prawdopodobnie domyślny typ dokumentu przyjęty przez niektóre przeglądarki jest taki, że $(window).height()
przyjmuje wysokość dokumentu, a nie wysokość przeglądarki. Dzięki specyfikacji doctype jest zadowalająco rozwiązany i jestem prawie pewien, że pieprzysz uniknie „zmiany przepełnienia przewijania na ukryte, a potem z powrotem”, co jest, przykro mi, trochę brudną sztuczką, szczególnie jeśli nie udokumentować na kodzie do wykorzystania w przyszłości przez programistę.
2. DODATKOWA wskazówka, uwaga na bok:
Co więcej, jeśli wykonujesz skrypt, możesz wynaleźć testy, które pomogą programistom w korzystaniu z bibliotek, pozwól mi wynaleźć kilka:
$ (dokument) .ready (function () {
if(typeof $=='undefined') {
alert("PROGRAMMER'S Error: you haven't called JQuery library");
} else if (typeof $.ui=='undefined') {
alert("PROGRAMMER'S Error: you haven't installed the UI Jquery library");
}
if(document.doctype==null || screen.height < parseInt($(window).height()) ) {
alert("ERROR, check your doctype, the calculated heights are not what you might expect");
}
});
EDYCJA: o części 2, „DODATKOWA wskazówka, odłóż na bok”: @Machiel, we wczorajszym komentarzu (2014-09-04), miał absolutnie rację: sprawdzenie $ nie może być w gotowym wydarzeniu Jquery, ponieważ jak zauważył, zakładamy, że $ jest już zdefiniowane. DZIĘKUJEMY ZA PUNKTOWANIE, ŻE, i proszę, resztę czytelnicy poprawcie, jeśli użyliście tego w swoich skryptach. Moja sugestia: w bibliotekach umieść funkcję „install_script ()”, która inicjuje bibliotekę (umieść dowolne odwołanie do $ wewnątrz takiej funkcji init, w tym deklarację ready ()) i NA POCZĄTKU takiej funkcji „install_script ()” , sprawdź, czy $ jest zdefiniowane, ale uniezależnij wszystko od JQuery, aby twoja biblioteka mogła „zdiagnozować się”, gdy JQuery nie jest jeszcze zdefiniowane. Wolę tę metodę niż wymuszanie automatycznego tworzenia JQuery przynoszącego ją z CDN. Są to małe notatki, które pomagają innym programistom. Myślę, że osoby tworzące biblioteki muszą być bogatsze w informacje zwrotne na temat potencjalnych błędów programisty. Na przykład Google Apis potrzebuje podręcznika, aby zrozumieć komunikaty o błędach. To absurdalne, że potrzebna jest zewnętrzna dokumentacja dotycząca drobnych błędów, które nie wymagają od ciebie szukania instrukcji lub specyfikacji. Biblioteka musi być DOKUMENTOWANA. Piszę kod nawet dbając o błędy, które mógłbym popełnić nawet za sześć miesięcy, i nadal stara się być czystym i nie powtarzalnym kodem, już napisanym, aby zapobiec błędom przyszłego programisty. Myślę, że osoby tworzące biblioteki muszą być bogatsze w informacje zwrotne na temat potencjalnych błędów programisty. Na przykład Google Apis potrzebuje podręcznika, aby zrozumieć komunikaty o błędach. To absurdalne, że potrzebna jest zewnętrzna dokumentacja dotycząca drobnych błędów, które nie wymagają od ciebie szukania instrukcji lub specyfikacji. Biblioteka musi być DOKUMENTOWANA. Piszę kod nawet dbając o błędy, które mógłbym popełnić nawet za sześć miesięcy, i nadal stara się być czystym i nie powtarzalnym kodem, już napisanym, aby zapobiec błędom przyszłego programisty. Myślę, że osoby tworzące biblioteki muszą być bogatsze w informacje zwrotne na temat potencjalnych błędów programisty. Na przykład Google Apis potrzebuje podręcznika, aby zrozumieć komunikaty o błędach. To absurdalne, że potrzebna jest zewnętrzna dokumentacja dotycząca drobnych błędów, które nie wymagają od ciebie szukania instrukcji lub specyfikacji. Biblioteka musi być DOKUMENTOWANA. Piszę kod nawet dbając o błędy, które mógłbym popełnić nawet za sześć miesięcy, i nadal stara się być czystym i nie powtarzalnym kodem, już napisanym, aby zapobiec błędom przyszłego programisty. musisz przejść do instrukcji obsługi lub specyfikacji. Biblioteka musi być DOKUMENTOWANA. Piszę kod nawet dbając o błędy, które mógłbym popełnić nawet za sześć miesięcy, i nadal stara się być czystym i nie powtarzalnym kodem, już napisanym, aby zapobiec błędom przyszłego programisty. musisz przejść do instrukcji obsługi lub specyfikacji. Biblioteka musi być DOKUMENTOWANA. Piszę kod nawet dbając o błędy, które mógłbym popełnić nawet za sześć miesięcy, i nadal stara się być czystym i nie powtarzalnym kodem, już napisanym, aby zapobiec błędom przyszłego programisty.