首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >调用NPAPI插件对象的方法响应插件

调用NPAPI插件对象的方法响应插件
EN

Stack Overflow用户
提问于 2014-03-09 22:43:52
回答 1查看 176关注 0票数 0

我在HTML页面中嵌入了一个NPAPI插件。当我从浏览器的开发者控制台调用它上的方法时,一切都是ok的--方法调用右边插件实例上的lands,并正确执行。无论如何,当我从JS回调调用相同的方法时,例如单击按钮,插件就会被销毁,重新创建,而NPP.pdata被设置为null。

它是否与JS多线程模型有某种联系,如何解决?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-17 13:49:23

我想通了。这个问题与NPAPI或JS多线程无关。

我用HTML形式调用了NPAPI插件对象上的方法。

代码语言:javascript
复制
<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();添加到回调函数中,就可以解决这个问题。这就是工作代码的样子。

代码语言:javascript
复制
<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();

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22289220

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档