jqGrid nicht richtig wiedergegeben in Chrom/Chrome Frame
Derzeit mit Chrome v19.0.1084.46 (Offizieller Build 135956) beta-m
jqGrid 4.3.2 (neueste Version)
Das problem ist, dass egal, wie groß mein raster, Spalten, oder mit div, einen Bruchteil meines letzten Spalte gedrängt über den Rand des Gitters, wodurch horizontale Bildlaufleisten angezeigt, was nicht passieren sollte. Siehe unten:
Ich habe das hantieren mit den folgenden Parametern auf jqGrid, um zu versuchen und fixieren Sie dieses:
width
autowidth
height
shrinkToFit
scrollOffset
- Hatte das größte Glück mit diesen, aber nichts wiederholbar.
Habe ich auch abgespeckte, um die grundlegenden grid-css nur denken, es hätte eine Regel, die ich eingeführt...ohne Glück.
Hat sonst noch jemand erlebt und/oder eine Lösung gefunden? Hilfe ist sehr willkommen.
InformationsquelleAutor IronicMuffin | 2012-05-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich heute aktualisiert mein Chrome-version 19, haben, reproduziert das problem und machte die entsprechenden quick&dirty fix:
Schlage ich vor zu ändern die Zeile von jqGrid-code
den folgenden
Die demo das Update verwenden. Die Feste version der
jquery.jqGrid.src.js
was ich in der demo können Sie bekommen hier.Getestet habe ich es im IE9 (v9.0.8112.16421), IE8 (8.0.6001.18702 CO), Chrom 18.0.125.168, Chrome 19.0.1084.46 Safari 5.1.7 (7534.57.2), Firefox 12, Opera 11.62. In allen web-Browsern, die demo hat keine horizontalen Scrollbalken und es sieht aus wie folgt:
In der Zukunft wäre es besser, zu ändern, die Berechnung der Breite des Gitters mehr Tiefe zu haben, die keine direkte Abhängigkeit von einer beliebigen version-Nummer oder web-browser. Ich hoffe, es wird möglich sein, wenn für den Einsatz mehr jQuery-Methoden $.Breite und $.outerWidth in einigen Orten von jqGrid. In irgendeiner Weise hoffe ich, dass die oben beschriebene fix wäre schon hilfreich für viele jqGrid Benutzer.
AKTUALISIERT: ich habe meine Vorschlag trirand als der bug-report.
AKTUALISIERT 2: um genau Zu sein sind es drei stellen im code, wo sind die gleichen
$.browser.webkit || $.browser.safari
- Konstrukt, wie oben beschrieben: innerhalb setGridWidth, innerhalb von getOffset, innerhalb der Berechnung der Breite vonmultiselect
Spalte, innerhalb showHideCol und innerhalb setGridWidth. Die ersten drei Plätze verwendetisSafari
variable. Die letzten zwei stellen verwendet$.browser.webkit || $.browser.safari
direkt. Sollte man ersetzen in allen Orten, den codezu
Also sollte man dies tun, in drei Plätze:
isSafari
(sehen mir original-post)showHideCol
setGridWidth
Können Sie die korrigierte version des
jquery.jqGrid.src
mit den Korrekturen hier. Sie können die gleichen änderungen in den code vonjquery.jqGrid.src
selbst wenn Sie die alte version von jqGrid. Erstellt minimierte version für die Produktion können Sie alle minimizer, die Sie gut kennen. Ich benutze zum Beispiel Microsoft Ajax Minifier 4.0. Einfach installieren Sie und führen SieAls Ergebnis erhalten Sie jquery.jqGrid.min-fixed3.js, die sogar noch kleiner als original
jquery.jqGrid.min.js
. Auch, wenn Sie das Kommentar-header der Datei (siehe geänderte Datei) wird die Datei noch kleiner als die Originale version vonjquery.jqGrid.min.js
.Nach einigen Iterationen meiner bug-report und die Verbesserungen gibt es eine weitere version des Updates wo die Methode
cellWidth
eingeführt wurde:Sehen hier. Wenn Sie lieber dem Weg Folgen, können Sie dies auch tun. In dem Fall, In allen Orten, wo
isSafari
oder$.browser.webkit || $.browser.safari
(inshowHideCol
undsetGridWidth
) verwendet werden, können Sie$.jgrid.cellWidth()
statt.AKTUALISIERT 3: Heute veröffentlicht wurde jqGrid 4.3.3 enthält das Update welches ich oben beschrieben habe (die
cellWidth
- Methode). Also ich empfehle allen die neue version verwenden.AKTUALISIERT 4: Google Chrome 20 verwendet WebKit 536.11. Also alle, die nicht die Letzte version von jqGrid mit der festen Berechnung der Breite verwenden sollte
parseFloat($.browser.version)<536.11
(oder etwas enger) stattparseFloat($.browser.version)<536.5
beschrieben, die zu Beginn der Antwort. Google Chrome 23 WebKit verwendet 537.11.Ich kann nicht Debuggen Bilder! Neue Update, das funktioniert in Ihrem Fall muss ich haben die demo, die das problem reproduzieren. Sollten Sie post JavaScript-code, welche das problem reproduziert.
Du hast Recht! Es gibt noch ein bug existiert in der aktuellen code von
cellWidth
Funktion. Ich denke, das könnte verbessert den code ein wenig. Look at mein Kommentar.ich habe ein Upgrade auf 4.3.3 und das ist kein Thema mehr.
Es ist richtig. Es war ein von den wichtigsten Gründen, warum die 4.3.3 veröffentlicht wurde. Ich fragte Letzte Woche Tony zu tun, aber er war beschäftigt und veröffentlicht 4.3.3 nur heute. Ich werde hinzufügen, "UPDATED 3:".
InformationsquelleAutor Oleg
Oleg Lösung für mich gearbeitet.
Ich nur bearbeitet werden, die min-version
Linie 49:
ersetzt:
m=b ist.browser.webkit||b.browser.safari?!0:!1
mit:
m=(b.browser.webkit||b.browser.safari)&&parseFloat(b.browser.version)<536.5?!0:!1
Danke für die Hilfe!
Wollte nur hinzufügen, dass dies nicht eine verallgemeinerte Lösung. Wenn es funktioniert, dann große, aber möchten Sie vielleicht einen Blick auf Oleg ' s updates und aktuellere Antworten.
InformationsquelleAutor user1399332
Oleg ' s Antwort ist richtig. Allerdings, wenn Sie eine ältere version von jqGrid und anwenden möchten diese behebt, kann es einfacher sein, nehmen Sie die änderungen direkt aus der diffs auf Github. Ich getestet habe dies erfolgreich mit jqGrid 4.0.0, also vermutlich wird es auf keiner der 4.x-Serie.
Nur beginnen Sie mit der ersten vergleichen und anwenden jeden von Ihnen um. Dies wird fügen Sie
cellWidth
- Funktion und machen Sie alle notwendigen änderungen in der jquery.jqGrid.src.js Datei. Dann können Sie den Google closure compiler, wenn Sie möchten, erstellen Sie eine minified-version:Es scheint wie eine Menge änderungen, aber wenn Sie schauen Sie sich die aktuellen code-änderungen gehen sehr schnell. Nur ein paar Quellcode-Zeilen betroffen sind.
InformationsquelleAutor Justin Ethier
Chrome beta 20.0.1132.11 heraus und berichtet das folgende:
Ich vermute 536.11 ist die Bewertung als " < 536.5 durch numerische vs text-Vergleich verursacht der patch nicht zu funktionieren?
Bitte um Hilfe!!
Das jqGrid online-demo ' s wurden aktualisiert mit der neuesten version von jqGrid, umfasst Oleg ist fix. Sehen Sie noch das problem auf, dass die Seite bei der Verwendung von Chrome 20?
Ich sehe diesen Fehler im Chrom, Version 20.0.1132.57 (0). Ich bin derzeit mit jqGrid 4.4.0. Sollte jemand testen, Safari 6, die gekommen sind aus der letzten und ändern Sie den code zu tun, der miese Verhalten für alte Browser, anstatt zu versuchen zu hacken um neuere builds, die immer passiert.
Dies ist ein Kommentar und keine Antwort. Auch Oleg ' s Antwort schon decken diese in seinem "UPDATE 4".
InformationsquelleAutor johnmac
Update: Meine anwswer bezieht sich auf ein ähnliches Problem, das passiert in Firefox vor ein paar Monaten, und ich schlug vor, in der Hoffnung, es würde Arbeit für Chrome 19, derzeit aber Oleg ' s Antwort ist der richtige Ansatz.
Ich hatte ein ähnliches Problem vor ein paar Monaten mit FF und ich war mit dem ForceFit option, die verhindern soll, das HScroll und ganz aber wie du Sie erwähnt hast würde ich noch bekommen, so dass ich nur deaktiviert die HScroll für meine forcefit Netze. Ein paar updates später von FF, der hat es halt passiert, und derzeit sind alle meine Netze sind fein in Chrome 18 wird es ja hoffentlich kein Problem sein, wenn 19 freigegeben wird.
Force Fit
Wenn auf true gesetzt, und vergrößern Sie die Breite einer Spalte, der Spalte daneben (rechts) wird die Größe, so dass die gesamte Breite des Rasters ist gepflegt (z.B., dass die Breite von Spalte 2 durch 30px erhöht die Größe der Spalte 3 von 30px). In diesem Fall gibt es keine horizontalen scrolbar. Hinweis: diese option ist nicht kompatibel mit shrinkToFit option - i.e wenn shrinkToFit auf false gesetzt ist, forceFit ignoriert.
shrinkToFit
.Gut, dass ist bedauerlich da ich im gleichen Boot wie Sie, wenn dieses problem weiterhin besteht, wenn Chrome 19 ist im release. Können Sie bestätigen, wenn die Netze sind mit diesem Problem auf der demo-Seite trirand.com/blog/jqgrid/jqgrid.html
Auch haben Sie forcefit zu wahren?
Ja, ich forcefit true pro die docs. Sieht aus wie das problem ist auf der demo-Seite.
Nur um zu klären, das Problem mit jqGrid und Chrome 19; siehe Oleg ' s Antwort für alle details.
InformationsquelleAutor Chad Ferguson
Wollte nur darauf hinweisen, dass dies ist wahrscheinlich auf webkit Problem 78412 schließlich aufgelöst. Im wesentlichen würde es nicht Grenzen, und ich glaube, die Polsterung als auch bei der Berechnung der Breite von Tabellen mit einem festen layout.
Bedeutete dies, dass jqGrid wäre falsch zu berechnen, ist die Breite der Tabelle, wie Sie nur die Breite Ihres content-Bereich. So entfernen die Rahmen und die Polsterung sollte auch das problem lösen, aber Sie wahrscheinlich würde nicht wollen, das zu tun.
InformationsquelleAutor Nadir Muzaffar
Verwenden wir jgGrid 4.3.3 und
cellWidth
hat nicht das Problem zu lösen...um es zu lösen, fügte ich die Zeilereturn parseInt(testCell) !== 5;
stattreturn testCell !== 5;
imcellWidth
Methode. Vielleicht ist es nicht die beste Lösung, aber es funktioniert für uns 🙂InformationsquelleAutor Alex Dn
In jQGrid 4.5.2 mit Chrome 59.0.3071.115 ich habe die Funktion in cellWidth grid.base.js zu:
InformationsquelleAutor alsco77