cjpearson / cordova-plugin-keyboard

Keyboard Plugin for Cordova
177 stars 347 forks source link

Conflicts with new Chrome Keyboard lock API #75

Open derwaldgeist opened 6 years ago

derwaldgeist commented 6 years ago

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.

Aarbel commented 6 years ago

@cjpearson

cjpearson commented 6 years ago

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.

derwaldgeist commented 6 years ago

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