NPAPI代碼:NPAPI plugin_invoke函數返回的字符串值亂碼
bool plugin_invoke(NPObject *obj, NPIdentifier methodName, const NPVariant *args, uint32_t argCount, NPVariant *result) {
NPUTF8 *name = browser->utf8fromidentifier(methodName);
if(strcmp(name, plugin_method_name_getAddress) == 0){
NPString password;
if(argCount > 0) {
password = NPVARIANT_TO_STRING(args[0]);
}
const char * StringVariable = password.UTF8Characters;
char* npOutString = (char *)malloc(strlen(StringVariable+1));
if (!npOutString)
return false;
strcpy(npOutString, StringVariable);
STRINGZ_TO_NPVARIANT(npOutString, *result);
browser->memfree(name);
return true;
}
return false;
}
的html代碼:
function run() {
var plugin = document.getElementById("pluginId");
var passwordBeforEncryption = document.getElementById("passwordFeild");
if(plugin){
var value = plugin.getAddress("hello, just test it");
alert(value);
}else{
alert("plugin is null");
}
}
正確的結果應該是:「你好,只是測試它「,但有時會返回」你好,只是測試它「。它只是有時候不是所有的時間!
請幫忙。
可能重複(14)不給一個空值終止字符串的一部分NPVariant](http://stackoverflow.com/questions/7807917/chrome-newer-version14-does-not-give-a-null-terminated-string-as-part-of-npvar) – smorgan