我创建了一个简单的可编写脚本的 npapi 插件。在 FireFox 上的 JavaScript 和插件之间传递字符串可以正常工作。但是如果字符串包含连字符 (-) 符号,它将在 Google chrome 上生成一些额外的随机字符。例如,在我的 JavaScript 代码中,我有
plugin.method("a-b");
在我的 npapi 代码上,我有
bool ScriptablePluginObject::Invoke(NPIdentifier name, const NPVariant *args, uint32_t argCount, NPVariant *result) {
char* outString = args[0].value.stringValue.UTF8Characters;
char* npOutString = (char *)NPN_MemAlloc(strlen(outString) + 1);
strcpy(npOutString, outString);
STRINGZ_TO_NPVARIANT(npOutString, *result);
return true;
}
在 Firefox 上,它返回“ab”,在 Chrome 上,我会看到带有一些额外随机符号的“ab*[-..”。我尝试将 npplugin.dll 放在 Mozilla 下的“插件”目录中或使用 Chrome 扩展教程(http://code.google.com/chrome/extensions/npapi.html),这两种方式都给了我同样奇怪的行为。代码用xulrunner-10.0.2.en-US.win32.sdk编译,使用xulrunner-1.9.0.17.en-US.win32.sdk也有同样的问题。
有没有人有任何线索?