You can try using vibration pattern instead of single duration like
navigator.vibrate([500, 100, 500]); // Vibrate for 500ms, pause for 100ms, then vibrate for 500ms
If navigator.vibrate(0) doesn’t stop the vibration, you can try using navigator.vibrate([]) or navigator.vibrate([0]) as a workaround.