2013-01-29 5 views
6

Dies ist nicht die gleiche Frage wie alle anderen.Ich verhindere bereits, dass Chrome beim Ziehen in den Textauswahlmodus wechselt. (Bearbeiten: Ich möchte nur das Symbol/Aussehen sperren, nicht den Ort oder die Bewegung einschränken, und nur zwischen Mousedown und MouseUp) Das Problem, das ich vermeiden möchte, ist, dass Chrome den Cursor während des Ziehens ändert, auf was auch immer unter dem Cursor (ie-i-beam während über Texteingabesteuerung, Hand während über Hyperlink usw.).Sperren Sie den Mauszeiger beim Ziehen in Chrome

IE und FireFox/Moz unterstützen element.setCapture(), das ich im mousedown-Ereignis aufruft, das diese Browser an das Element "sperrt", so dass der Mauszeiger auf dem Cursor dieses Elements bleibt. Sehr nett . Chrome unterstützt diese Funktion oder ähnliches, die ich kenne, nicht.

mousemove- und mouseup Ereignisse auf dem Dokument-Objekt anstelle des Elements Durch das Beobachten, das geklickt wurde, ich bin meisten des SetCapture() Verhalten noch in der Lage zu bekommen, dass ich Mausereignisse verfolgen können, die außerhalb passieren von das Element und sogar außerhalb des Browserfensters. Allerdings bleibt mir noch ein Problem, der Mauszeiger ändert sich in Chrome.

+0

Wenn Sie auf eine Schaltfläche klicken und dann die Maus in verschiedenen Browsern um die Seite ziehen, sehen Sie die Ursache des Problems. In IE und FF bleibt das Maussymbol auf dem, was für die Schaltfläche festgelegt wurde (weil die Schaltfläche "erfasst" die Maus bei gedrückter Maustaste). In Chrome ändert sich die Maus beim Ziehen. Vielleicht gefällt es Chrome-Nutzern eher, dass sie es nie bemerkt haben oder nicht, aber für meine spezifische Verwendung (Ziehen, um die Größe einer Spalte in einer Tabelle zu ändern) ist es ablenkend und scheint für meine Nutzer ein "Bug" zu sein. – eselk

Antwort

0

Normalerweise setze ich ein Element über alles andere mit dem beabsichtigten Cursor auf die Maus und entferne es mit der Maus nach oben. Weit entfernt von der saubersten Vorgehensweise, aber es funktioniert für mich.

3

Ich glaube, Sie suchen nach der Pointer Control Lock API, eine kürzlich eingeführte Möglichkeit für Benutzer, das Eingabegerät des Benutzers zu steuern (wenn erlaubt). Der große Anwendungsfall ist das Spielen.

Ohne eine sichere und unterstützte API wäre es ziemlich katastrophal (z. B. Clickjacking und erzwungene Malware-Downloads), Sites zuzulassen, Benutzersteuerelemente zu übernehmen. Wenn Sie also den Cursor "sperren" möchten, ist dies wahrscheinlich der Fall Ihre einzige Option.

+1

Ich werde meine Frage aktualisieren, um es hoffentlich klar zu machen - ich möchte nur die Darstellung des Cursors sperren (Symbol, wenn du willst), nicht den Bewegungsbereich oder den Standort einschränken. Genau das, was setCapture() in den anderen Browsern tut, und das seit mehr als 10 Jahren, meines Wissens ohne irgendwelche Sicherheitsprobleme. – eselk

Verwandte Themen