调用NPAPI插件对象上的方法会重新生成插件
Calling a method on NPAPI plugin object respawns the plugin
我有一个嵌入在HTML页面的NPAPI插件。当我从浏览器的开发控制台调用它的方法时,一切都很好-方法调用落在正确的插件实例上并正确执行。无论如何,当我从JS回调调用相同的方法时,例如,像按钮单击,插件被销毁并重新创建,而NPP.pdata
被设置为null。
它是否与JS多线程模型有关,如何解决?
我明白了。该问题与NPAPI或JS多线程无关。
我在HTML表单中调用NPAPI插件对象的方法。
<form>
<input id="whatever-button" type="submit" value="Whatever"></input>
</form>
<script type="text/javascript">
$('#whatever-button').click(function(e) {
var plugin = document.getElementById('plugin');
plugin.whatever();
});
</script>
我没有考虑的是页面重新加载-这是单击按钮后的默认操作。页面重新加载然后触发插件对象重建,它是足够快,所以我没有注意到它。只需将e.preventDefault();
添加到回调函数中即可解决此问题。这就是工作代码的样子。
<embed id="plugin" type="application/my-npapi-plugin" width="640" height="480">
<form>
<input id="whatever-button" type="submit" value="Whatever"></input>
</form>
<script type="text/javascript">
$('#whatever-button').click(function(e) {
e.preventDefault();
var plugin = document.getElementById('plugin');
plugin.whatever();
});
</script>
UPD:实际上,将输入类型设置为button
,而不是submit
,更容易解决问题。它也不需要e.preventDefault();
.
相关文章:
- 如何在Angular2中使用jQuery插件
- 可以前端maven插件使用节点,npm已经安装
- 如何使jQuery插件函数可调用以供独立使用,而不在集合上操作
- 我的jQuery插件参数没有正确启动,遇到了问题
- 如何在elfinder插件(一个文件管理器插件)上获得上传前事件
- 是否有任何snippet或jQuery插件可以列出easylist.txt模式匹配的DOM中的所有元素
- TableExport jquery插件:文件名和扩展名问题
- 如何在使用selectBoxIt JQuery插件时检测选项更改
- jQuery插件-从插件中调用公共方法
- 压缩phonegap中ios的图像插件
- jQuery粘性插件可变顶部间距
- Jquery表单验证插件-如果选中复选框,如何在提交时执行某些操作
- 高亮显示与数组字符串一起使用时文本插件中断
- 如何为jQuery屏蔽输入插件创建一个允许字母数字、空格和重音字符的掩码
- Wordpress插件根据需要加载js和css
- jQuery Wan Spinner插件的多个字段
- jQuery Facebox插件:关注弹出的外观
- CKEditor v4:自制插件中对话框的动态标题
- Jquery标签插件粘贴问题
- 扩展jQuery插件以更改配置