gpt4 book ai didi

javascript - 在 NPAPI 插件对象上调用方法会重新生成插件

转载 作者:行者123 更新时间:2023-11-28 07:02:04 44 4
gpt4 key购买 nike

我在 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();

关于javascript - 在 NPAPI 插件对象上调用方法会重新生成插件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22289220/

44 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com