Plugin development tips
Cordova provides you with a javascript API. They try to follow standards when possible. Firefox OS is built on web standards too. Sometimes they use the same API. How can a plugin developer access Firefox OS API when they clash?
Cordova provides us with a modulemapper
library to access the original values of overwritten properties. Let’s take a look at how the battery-status plugin uses modulemapper
:
var mozBattery = cordova.require('cordova/modulemapper').getOriginalSymbol(window, 'navigator.battery');
The variable mozBattery
now points to the original navigator.battery
. The first parameter to getOriginalSymbol
is the context, pretty much always window
. The second is the value you want to get. To find out what value to use on the second parameter, check the <js-module>
element in the plugin’s plugin.xml
configuration file. For the battery-status plugin it is:
<js-module src="www/battery.js" name="battery">
<clobbers target="navigator.battery" />
</js-module>
The <clobbers>
element’s target
attribute has the value that was overwritten.