get url from plugin

来源:互联网 发布:js 0除以0 nan 编辑:程序博客网 时间:2024/06/05 07:38

 std::string GetUrl(NPP instance)
{
 std::string origin;

 NPVariant loc_value;
 NPVariant href_value;
 NPIdentifier href_id = NPN_GetStringIdentifier("href");
 NPIdentifier location_id = NPN_GetStringIdentifier("location");

 VOID_TO_NPVARIANT(loc_value);
 VOID_TO_NPVARIANT(href_value);

 do {  
  NPObject* win_obj;
  if (NPN_GetValue(instance, NPNVWindowNPObject, &win_obj) !=
   NPERR_NO_ERROR)
  {
   break;
  }
  if (!NPN_GetProperty(instance, win_obj, location_id, &loc_value) ||
   !NPVARIANT_IS_OBJECT(loc_value))
  {
   break;
  }

  NPObject* loc_obj = NPVARIANT_TO_OBJECT(loc_value);
  if (!NPN_GetProperty(instance, loc_obj, href_id, &href_value) ||
   !NPVARIANT_IS_STRING(href_value))
  {
   break;
  }

  std::string href(NPVARIANT_TO_STRING(href_value).utf8characters,
   NPVARIANT_TO_STRING(href_value).utf8length);

  origin = href;

 } while (0);

 NPN_ReleaseVariantValue(&loc_value);
 NPN_ReleaseVariantValue(&href_value);
 return origin;
}

原创粉丝点击