gpt4 book ai didi

javascript - 无法将整数从 javascript 传递到 npapi 插件

转载 作者:行者123 更新时间:2023-11-28 09:42:51 26 4
gpt4 key购买 nike

我正在编写一个简单的napapi插件,我必须在html页面中打印从javascript函数传递的值。但我在做的时候遇到了问题。它在火狐浏览器上运行正常。但我想在 qt fancybrowser 示例上执行此操作。无论我在 javascript 代码中传递什么值,打印的值始终为 0。

JavaScript代码如下:

<html>
.....
<script>
function process_data()
{
PluginObject = document.getElementById("Object");
var i =100;
if(PluginObject){
ret = PluginObject.process_Data(i);
}
}
</script>
....
</html>

插件代码如下:

.....
bool ScriptableObject::process_Data(const NPVariant* args, uint32_t argCount, NPVariant* result)
{
printf(" process_Data\n");
printf("\t argCount : %d\n",argCount);

int tempi =args[0].value.intValue;
int tempf =args[0].value.doubleValue;

printf("type: %d type: %u\n",args[0].type,args[0].type);
printf("tempi : %d tempf : %f\n",tempi,tempf);
}
......

输出如下:

process_Data
argCount : 1
type: 4 type: 4
tempi : 0 tempf : 0.000000

实际上它应该打印 100,这是从 javascript 传入 var i 的值。

欢迎任何建议/意见

提前致谢

最佳答案

向 NPAPI 方法提供数字参数时,未定义您是否会收到 Int32Double 变体,因此您必须在代码中处理这两种情况.
此外,NPVARIANT_TO_* 宏仅提取相应的值 - 它们不执行任何转换。

要从任何数字参数中提取整数,您必须编写自己的代码,例如像这样:

bool convertToInt(const NPVariant& v, int32_t& out) {
if (NPVARIANT_IS_INT32(v)) {
out = NPVARIANT_TO_INT32(v);
return true;
}

if (NPVARIANT_IS_DOUBLE(v)) {
out = NPVARIANT_TO_DOUBLE(v);
return true;
}

// not a numeric variant
return false;
}

关于javascript - 无法将整数从 javascript 传递到 npapi 插件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12172380/

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