Das ist eine etwas interessante Zahl. Google liefert einige Bug-bezogene Threads. Der Grund, warum sie mir auffiel, ist, dass ich viele E-Mails wie diese bekomme:
Der AnythingSlider funktioniert nicht in Opera!!!
Sie hatten Recht... aber es schien ein ziemlich neues Problem zu sein und ich konnte nie herausfinden, warum. Es stellt sich heraus, dass alles auf 32766 zurückzuführen ist.
Ich bekam früher E-Mails von Leuten, die den AnythingSlider benutzten und etwa 80 Folien hinzufügten und er funktionierte nicht mehr. Der Grund war immer, dass das innere
- -Element, das alle Folien umschloss, zu schmal war, um ihre 80 Folien unterzubringen. Es war auf eine feste Breite von 9999px eingestellt. Die richtige Antwort wäre gewesen, den Wrapper auf die Breite einer Folie multipliziert mit der Anzahl der Folien zu setzen (über JavaScript). Aber aus reiner Faulheit fügte ich einfach eine weitere "9" zur Breite hinzu, wodurch der Wrapper auf 99999px kam. Dies war die Änderung, die Opera kaputt machte.
Anscheinend kann Opera keine Breiten größer als 32766px verarbeiten. Es gibt einen Thread in den Opera-Foren, was bedeutet, dass ich hier nicht allein bin.
Leser Erdei Csaba hat mich darauf aufmerksam gemacht
32766px ... ist die höchste vorzeichenbehaftete 16-Bit-Zahl (32767) - 1.
Opera muss diese Werte als vorzeichenbehaftete 16-Bit-Zahlen speichern. Und anscheinend werden höhere positive Werte (> 32767) als negative Werte verarbeitet. Die CSS1-Spezifikation verbot ausdrücklich negative Breitenwerte, aber die neueren Spezifikationen sagen nichts wirklich darüber aus. Sie gehen wahrscheinlich davon aus, dass sie nichts sagen mussten, weil es offensichtlich ziemlich lächerlich ist, eine negative Breite zu haben.
Kurz gesagt: Die maximale Breite eines Elements in Opera beträgt 32766px, und das sollte wahrscheinlich behoben werden.
Ich weiß nicht, was seltsamer ist, die Tatsache, dass Leute Slider mit 80 Folien erstellen können, oder die Tatsache, dass sie sich tatsächlich die Mühe machen, sie anzupassen, um 2% ihrer Besucher glücklich zu machen (wenn ich sicher einschlafen würde bei Folie Nummer 30...)
Ich stimme zu, Mann... 80 Folien... ist das ein Film? Du bist ein ausdauernder Mann, 30 zum Einschlafen... Ich würde bei 10 abstürzen.
Wie auch immer, GROSSARTIGE ARBEIT Chris, ich benutze AnythingSlider, es ist fantastisch
Nur weil du dir keinen Grund vorstellen kannst, warum du 80 Folien haben würdest oder eine solche Breite überschreiten müsstest, heißt das nicht, dass andere das nicht getan haben.
So etwas wie ein "Film" in JavaScript wäre wirklich akzeptabel, um solche Breiten zu haben, oder vielleicht, wenn du etwas auf einem riesigen Bildschirm präsentierst. Ich bin sicher, es gibt andere Gründe, aber Opera sollte das wirklich beheben. Es hilft niemandem, es negativ zu machen...
Gut zu wissen. Obwohl ich da irgendwie Fabio zustimme. Wer hat 80 Folien auf seiner Seite?
Es sollte behoben werden. Aber trotzdem, 32766 ist viel! Du kannst viel Inhalt auf 32766 Pixel quetschen. Sie dachten wahrscheinlich das Gleiche wie Fabio.
Ich war noch nie in einer Situation, in der ich einen CSS-Wert auf mehr als 1500 setzen musste.
Ich bin mir nicht sicher, ob es wichtig ist, aber die größte Zahl, die in einem 16-Bit-Integer gespeichert werden kann, ist 32767. Ich verstehe nicht, warum Sie davon eins abziehen.
Wenn Sie versuchen, 32768 in einem vorzeichenbehafteten 16-Bit-Integer zu speichern, wird es als -32768 dargestellt. Es ist durchaus möglich, 32767 in einem vorzeichenbehafteten 16-Bit-Integer darzustellen. Alles darüber hinaus wird negativ.
Das Abziehen von eins wird verwendet, um den maximalen Bereich zu finden. Im Fall von 16-Bit-Integern ist 1 Bit für das Vorzeichen und die restlichen 15 Bits für den Wert. In 15 Bits können Sie bis zu 2^15 Werte speichern. Wenn Sie also mit Null beginnen (was Sie tun sollten), gehen Sie bis zur Zahl
2^15 – 1
was ist
32768 – 1
was ist: 32767.
In einem vorzeichenbehafteten 16-Bit-Integer können Sie also positive Werte von 0 bis 32767 speichern.
Ich weiß, dass es ein Durcheinander ist, aber ich hoffe, es ist verständlich.
Als der Artikel besagte, dass „32766px ... die höchste vorzeichenbehaftete 16-Bit-Zahl (32767) - 1 ist“, sagt er, dass
– 32767 in einem 16-Bit-Integer dargestellt werden kann,
– 32767 die höchste vorzeichenbehaftete 16-Bit-Zahl ist
Sie sagen hier also ziemlich dasselbe :)
„Ich verstehe nicht, warum Sie davon eins abziehen.“
Ich auch nicht, denn ich habe keinen Zugriff auf den Opera-Quellcode.
Aber ich kann mir eine Verwendung vorstellen.
Erstens, wenn Sie ein Limit wie 32767 setzen, erwarten Sie nicht, dass Sie „solche Werte“ benötigen (der ganze Punkt des Artikels ist zu erklären, dass diese Aussage falsch ist), was bedeutet, dass Sie auch 32767 nicht verwendet erwarten.
Wenn Sie einen „speziellen Wert“ wie „uninitialisiert“ benötigen und 0 in Ihrem Kontext sinnvoll ist, ist es besser, „MAX VALUE“ zu verwenden, denn wenn MAX VALUE sinnvoll ist, ist es wahrscheinlich, dass MAX_VALUE+1 auch sinnvoll ist, was bedeutet, dass Ihr Limit zu niedrig ist.
Eine andere Erklärung ist, dass es einfach einen Test gibt wie „
if (value<MAX_VALUE)“ anstelle von „if (value<=MAX_VALUE)“.Der Artikel scheint auch anzunehmen, dass sie sich für die Verwendung eines vorzeichenbehafteten Wertes entschieden haben, weil sie denken, dass der Wert tatsächlich negativ sein KANN. Tatsächlich kann es in C/C++ besser sein, immer einen vorzeichenbehafteten Integer zu verwenden. Einerseits „verlieren“ Sie die Hälfte der Werte, aber andererseits, seien wir ehrlich, wenn 33000 verwendet werden kann, wird niemals 66000 verwendet werden? Wenn 16 Bit nicht ausreichen, wechseln wir zu 32 Bit... Es ist keine Frage von vorzeichenbehafteten oder vorzeichenlosen Integern...
Das Mischen von vorzeichenbehafteten und vorzeichenlosen Integern bei Operationen kann manchmal zu „nicht leicht vorhersehbaren“ Ergebnissen führen. Manchmal (abhängig vom Compiler) müssen Sie Dinge explizit umwandeln. Die Verwendung von nur vorzeichenbehafteten Integern „kann“ eine gute und einfache Lösung sein, es ist eine architektonische Wahl (die Ihnen gefallen mag oder auch nicht).
Ach ja, und erinnern Sie sich an den Typen, der einst sagte: „64 KByte reichen aus!“ Er wird immer noch verspottet, weil er eine so kühne Aussage gemacht hat.
Der Wechsel zu int-32 verbraucht offensichtlich mehr Speicher und verlangsamt den Browser insgesamt.
Oh, der positive Bereich für den Datentyp int-16 ist (2^16)/2 - 1 = 32766 (-32767 bis 32766). Geteilt durch 2 für positiv und negativ. Minus 1, weil es 0-basiert ist.
Tatsächlich, kurz gesagt, hättest du die Korrektur für den AnythingSlider richtig implementieren sollen. Nur so gesagt...
Nun, ich bin froh, dass ich das nicht getan habe, denn wenn ich es getan hätte, hätte das JavaScript Breiten über 32766 berechnet und das Problem wäre immer noch aufgetreten. Also ist es jetzt auf die maximal vorab verfickte Breite eingestellt.
Aber setzt du damit nicht jetzt IE, Firefox, Chrome usw. dieser maximalen Breite aus? Obwohl sie immer noch die Fähigkeit haben, diese Breite ohne Fehler zu übergeben?
Wäre es nicht einfach schlau, die JavaScript-Methode zu verwenden, aber dann eine Beschränkung für Opera-Browser einzubauen, damit ihre Breite nicht über 32766px liegt?
Vielleicht übersehe ich etwas, aber ich war nie ein Fan dieser Probleme. Hoffentlich eines Tages...
Hast du es also auf 32766 oder 9999px gesetzt?
„Nur so gesagt...“ ist das Internet-Äquivalent von „Ich weiß, dass ich ein Arschloch bin, aber ich habe es trotzdem gesagt...“
LOL, du hast Recht. Leute, hört auf, Arschlöcher zu Chris zu sein!
Gut zu wissen.
Das sind gute Nachrichten. Ich habe mich immer gefragt, warum es in Opera nicht funktionierte.
Nur wenige Leute benutzen jetzt vielleicht Opera... aber es gewinnt schnell Marktanteile. Und es ist weltweit der führende mobile Browser.
und... Opera Mini wurde gerade beim App Store eingereicht, sodass es bald auf dem iPhone sein wird (vorbehaltlich der Genehmigung durch Apple für etwas Wettbewerb)
Apple würde Google Latitude oder Voice nicht erlauben. Ich wäre sehr überrascht, wenn sie Opera Mini genehmigen würden.
Fehler wie diese bringen mich zurück zu meinen Tagen der Desktop-Programmierung. Sobald ich 32766 sah, hatte ich eine gute Vermutung, worum es in dem Beitrag gehen würde.
Oha, interessant. /ich mache mir Notizen
Ich weiß, dass es Leute mit guter Programmierung stört, aber wenn du eine so große Slide-Präsentation hast, solltest du sicherstellen, dass du nicht alle diese Bilder auf einmal lädst, aus Gründen der Browserleistung und des RAM-Verbrauchs.
Wie auch immer, ich verstehe, dass ein so großer Slider lächerlich ist und dass es nicht notwendig ist, Folien vor und nach der aktuellen zu laden und zu löschen, da der Slider in solchen Szenarien nicht verwendet werden sollte.
Es muss definitiv behoben werden, wenn der Slider die Browserbreite hat und der Browser volle Breite hat, passen auf manchen Computern vielleicht nur 12 Folien. Was nicht genug sein könnte, besonders im Falle einer Fotogalerie.
Ich kann mir horizontale Websites vorstellen, die mehr als 32.766 (7) Pixel für Präsentationszwecke benötigen, Fallbeispiel
ONETWENTYSIX
Danke für den Hinweis.
Ich bin mir nicht sicher, ob diese Seite deine Argumentation unterstützt. Das ist lächerlich. Gott bewahre, du bist auf einem Laptop... das Ding ist riesig. Wenn du 80 Dinge anzeigen musst, bin ich mir nicht sicher, ob ein Slider der richtige Weg ist.
Wenn das übrigens deine Seite ist, dann ignoriere alles oberhalb dieser Zeile, und ich entschuldige mich.
Ich muss Jeremy zustimmen, diese Seite ist auf einem Netbook oder Handy, sogar einem kleinen Laptop, unbrauchbar. Es ist eine nette Idee, funktioniert aber einfach nicht richtig.
Ich stimme dieser Art von Kommentar im Allgemeinen zu, aber komm schon. Manchmal muss man, um das auffälligste Design zu erzielen, etwas schaffen, das auf einem Mini-Laptop-Bildschirm oder einem Handy nicht richtig funktioniert.
Es ist zu weit hergeholt zu sagen, dass selbst die am besten gestalteten Portfolios auf einem Handy angezeigt werden sollten...
wenn sie horizontales Scrollen mit dem Mausrad nach unten/oben hinzugefügt hätten, wäre es viel besser.
aber ja, das auf einem kleinen Bildschirm würde mich definitiv abschrecken
Ich bin absolut anderer Meinung. Das ist ein großartiges Design. Wenn sie wollen, können sie eine mobile Version bereitstellen, aber das ist kein Grund, die Grenzen auf einem vollen Computer nicht auszureizen. (Ich bin übrigens auf einem Laptop, wenn auch mit guter Auflösung.)
Die einzige Verbesserung, die ich vornehmen würde, wäre, klarzustellen, dass die Verwendung der Pfeiltasten funktioniert (bemerkenswert gut). Aufgrund des Inhalts störte es mich nicht einmal, ein wenig nach oben und unten zu scrollen. Und wenn ich wirklich Zeit hätte, würde ich versuchen, eine dynamische Größenänderung basierend auf den tatsächlichen Fensterdimensionen vorzunehmen, aber im Sinne von Skilldricks Aussage geht es hier um auffälliges Design, nicht um sicheres Design.
Ich muss sagen, 32.766 scheint groß genug für alles zu sein, was man wollen könnte. Wenn dein Inhalt breiter als das ist, solltest du deine Folien wirklich dynamisch Stück für Stück mit asynchronen Aufrufen abrufen, vielleicht mit Vorab-Caching einer oder zwei Folien in jede Richtung, um sicher zu gehen.
Bis Bildschirmauflösungen 15.000 Pixel breit sind, sehe ich keinen Bedarf an >32.000 Pixel...
Zweitens, nur weil Opera seine Integer-Werte in vorzeichenbehafteten 16-Bit-Integern speichert, bedeutet das nicht, dass die maximale Breite 32.766 ist, sondern dass der maximal einstellbare Wert so ist. 1em > 1px, also was ist, wenn du die Breite auf 32766em setzt (ich erkenne, dass du nicht wirklich wissen wirst, wie breit das ist, aber alles, was du wolltest, war „breit genug“).
Das sind nur erste Reaktionen, also lass es mich wissen, wo ich ein Idiot bin.
32766px ist auch die maximale Höhe für (zumindest einige ältere Versionen von) Safari.
Ich weiß schon lange, dass ich ein Nerd bin, aber man muss wirklich ein Super-Nerd sein, um eine mehrseitige Diskussion über ein dummes Pixel zu führen. Und ich könnte mich irren, weil ich den Anything Slider nicht benutzt habe, aber ich gehe davon aus, dass er eine Einstellung für die Dauer hat, die jede Folie angezeigt wird, und wenn das der Fall ist, hat vielleicht jemand, der 80+ Bilder hineingepackt hat, einen „Zeichentrick“-Film erstellt.
Mach dir keine Sorgen, Chris. Ich benutze Opera als meinen persönlichen Browser und leider laufen viele JQuery-Plugins auf meinen Webseiten nicht richtig. Scrolltops zum Beispiel. Diese funktionieren in allen Browsern perfekt, außer in Opera. Ignoriere es einfach.
Das ist jetzt ein aufgeklärter Opera-Benutzer.
Guter Mann, dieser Beitrag hilft, Opera-Bugs zu lösen.
Großartig..!
Danke..! العاب