cordova-plugin-keyboard
cordova-plugin-keyboard copied to clipboard
Conflicts with new Chrome Keyboard lock API
Since build 68, the Chrome browser supports the W3C Keyboard lock specification:
https://w3c.github.io/keyboard-lock/
This API defines a global Keyboard singleton object with the methods lock() and unlock().
Since cordova-plugin-keyboard is using the global namespace for its own Keyboard object, there's a conflict now. I noticed this because I was (naively) checking for
if (typeof Keyboard === 'function')
in my code to detect the Cordova plugin. But since Chrome 68, this check will always be true (and broke my app, because I was calling Keyboard.hide() which is not part of Chrome's lock API.
I think it would be best if this plugin wouldn't clutter the global namespace at all, if possible.
@cjpearson
Hi Tom, thanks for catching this. I agree we should use a different location. I think window.cordova is used for other plugins, so it might be the best option.
In the interest of not breaking existing code, we could add the window.cordova.Keyboard API and deprecate window.Keyboard before eventually removing it in a later release. In the meantime, users who need the Keyboard Lock API should be able to get it back using delete window.Keyboard.
Thanks for your fast response. Sounds like a valid approach.