如何在Cordova插件中设置事件侦听器

Ren*_*nsz 6 titanium cordova appcelerator-titanium

我想问一下如何在Cordova插件中设置自己的事件监听器.

我有这个Share dialog用于我的Android,我想让我的Javascript设置一个监听器onShareDialogDismissonShareDialogLaunched

在Javascript中可能会发生的事情看起来像这样.

// Set a listener for dialog dismiss
document.addEventListener('onShareDialogDismiss', listenerCallback, false);

// Set a listener for dialog launch
document.addEventListener('onShareDialogLaunch', launchCallback, false);
Run Code Online (Sandbox Code Playgroud)

我有来自Titanium的这段代码,但它正在使用TiViewProxy类,可能会知道你如何fireEvent()在纯Android实现中做一个替代方案

谢谢!

bea*_*ver 6

首先,您已经阅读过Cordova插件开发文档了吗?

然后你就可以看到像这个cordova-plugin-network-information这样的插件是如何完成的:

检查例如JS接口代码,其中有这些代码行来引发Document事件:

cordova.fireDocumentEvent("offline");
Run Code Online (Sandbox Code Playgroud)

要么

cordova.fireDocumentEvent("online");
Run Code Online (Sandbox Code Playgroud)

阅读cordova.js内部有一个最小的API文档:

/**
 * Method to fire event from native code
 * bNoDetach is required for events which cause an exception which needs to be caught in native code
 */
fireDocumentEvent: function(type, data, bNoDetach)
Run Code Online (Sandbox Code Playgroud)

另一个可用的API是fireWindowEvent: function(type, data),但您可以在cordova.js中找到直接读取的其他API.

  • 网络信息插件通过使用每半秒运行一次的计时器来检查状态是否已更改,从而实现了相当繁琐的“事件”。应该有一种更智能的方法来触发事件而不使用Javascript计时器,事实上这是一种“作弊”方法,而不是真正的事件触发机制。 (2认同)