Comments (6)
You can disable double-click by removing the dblclick.zoom event listener after applying the zoom behavior:
selection
.call(zoom)
.on("dblclick.zoom", null);
Unfortunately, there’s not a similarly easy way to disable the double-tap because this is a “synthetic” event caused by a single-touch touchstart quickly following another single-touch touchstart. You could remove the touchstart.zoom listener, but then you’d be disabling touch entirely.
Are you still allowing wheel- and touch-based zooming? Or are you only allowing custom programmatic zooming by tapping on nodes or the background? In the later case you could simply avoid applying the zoom behavior to the selection, and simply use it programmatically via zoom.transform.
from d3-zoom.
Well, what you mentioned is exactly the point why I have opened this issue. The synthetic behavior is contained inside d3-zoom
. Therefore, it would make sense to have an option to disable the behavior entirely.
from d3-zoom.
Yes; if you there were an easy way to accomplish the requested feature without modifying d3-zoom, I would have already closed this issue. Currently the only way to disable double-tap would be to fork d3-zoom or to only use d3-zoom programmatically, handling input events yourself can then calling zoom.transform as desired.
from d3-zoom.
Many thanks to you @mbostock!
from d3-zoom.
@mbostock how do you disable these events with this demo? As it is not calling on selection.
http://bl.ocks.org/mbostock/34f08d5e11952a80609169b7917d4172
Or actually what I would like to implement, rather than disabling, is to undo zooming with double-click. And after that animation has finished, to call a custom function (to resample datasets).
Update: Ah, found the answer for the first question... You would chain it here:
svg.append("rect")
.attr("class", "zoom")
.attr("width", width)
.attr("height", height)
.attr("transform", "translate(" + margin.left + "," + margin.top + ")")
.call(zoom)
.on("dblclick.zoom", null);
from d3-zoom.
there is no dblclick property d.3 v3
from d3-zoom.
Related Issues (20)
- ScaleBy not working then focus set to path in svg HOT 1
- svg.call(d3.zoom().on('zoom',function(){})) warning : Argument of type 'ZoomBehavior<Element, unknown>' is not assignable to parameter of type '(selection: Selection<BaseType, unknown, HTMLElement, any>, ...args: any[]) => void'. HOT 2
- Option to pan with trackpad scroll and zoom with pinch? HOT 1
- Predefined events override manual transformations
- Mismatched link in README HOT 2
- documentation for zoom.on does not provide sufficient information to understand its use HOT 2
- Filtering doesn't work as expected for mouse events on macOS HOT 2
- Default zoom tween for translation animation surprising / More control over zoom animation tweens wanted HOT 2
- Zoom event listeners are passed an incorrect sourceEvent if a programmatic zoom occurs during a user zoom gesture
- Listen for zoom events with without d3-selection? HOT 2
- How to pan by dragging the trackpad with two fingers? HOT 1
- Zoom "end" is not called when pinch zooming and you start the zoom with the 2nd finger outside the chart HOT 2
- Navigator.maxTouchPoints is always 0 and should not be used
- selection.interrupt is not a function,
- iPhone Performance issues since iOS 16 HOT 1
- Zoom performance issues from iOS 16 onwards HOT 3
- function scale in Transform should support kX and kY instead of k HOT 1
- First zoom doesn't move scale to within scaleExtent HOT 2
- Referencing width on SVGElement when expected type is actually SVGSVGElement HOT 1
- Zoom Behaviour: disabling zoom.click and zoom.dblclick doesn't actually stop zoom behaviour from firing.
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from d3-zoom.