cordova-plugin-keyboard icon indicating copy to clipboard operation
cordova-plugin-keyboard copied to clipboard

Conflicts with new Chrome Keyboard lock API

Open derwaldgeist opened this issue 7 years ago • 3 comments

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.

derwaldgeist avatar Aug 11 '18 21:08 derwaldgeist

@cjpearson

Aarbel avatar Aug 12 '18 15:08 Aarbel

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.

cjpearson avatar Aug 13 '18 11:08 cjpearson

Thanks for your fast response. Sounds like a valid approach.

derwaldgeist avatar Aug 13 '18 22:08 derwaldgeist