首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NPN_Invoke getElementsByTagName不工作

NPN_Invoke getElementsByTagName不工作
EN

Stack Overflow用户
提问于 2013-07-25 10:27:22
回答 1查看 120关注 0票数 0

我尝试使用npapi和chrome通过标记名获取dom元素,但结果的长度始终为零。

代码语言:javascript
复制
    NPVariant tagName;  
    STRINGZ_TO_NPVARIANT("input", tagName);  
    NPVariant inputCollection;
    if(!NPN_Invoke(m_pNPInstance, doc,NPN_GetStringIdentifier("getElementsByTagName"), &tagName, 1, &inputCollection))
    {
        outLog<<"get input error"<<endl;
    }
    NPVariant npvlength;
    if (NPN_GetProperty(m_pNPInstance, NPVARIANT_TO_OBJECT(inputCollection), NPN_GetStringIdentifier("length"), &npvlength))
    {
        outLog<<npvlength.type<<"," <<npvlength.value.intValue<<endl;
    }

npvlength.value.intValue始终为0,但当我尝试获取元素时,它是正常的。我可以获取元素和它的属性。

代码语言:javascript
复制
        NPVariant index;
        INT32_TO_NPVARIANT(0, index);

        NPVariant Item;
        if (NPN_Invoke(m_pNPInstance, NPVARIANT_TO_OBJECT(inputCollection), NPN_GetStringIdentifier("item"), &index, 1, &Item))
        {
            NPVariant typeVal;
                if (NPN_GetProperty(m_pNPInstance, NPVARIANT_TO_OBJECT(Item), NPN_GetStringIdentifier("type"), &typeVal))
               {
                   outLog<<NPVARIANT_TO_STRING(typeVal).UTF8Characters<<endl;
               }
        }
EN

回答 1

Stack Overflow用户

发布于 2013-07-25 20:28:18

你确定是NPVariantType_Int32而不是NPVariantType_Double

尤其是跨浏览器,你不应该依赖于它是一个或另一个(不确定它们中的哪一个实际用于number值)。对于转换,请使用帮助器,例如:

代码语言:javascript
复制
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;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17848000

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档