如何在NPAPI中获取iframe html文档

时间:2011-06-09 10:41:56

标签: c++ npapi browser-plugin

我想在框架内获取文档。

以下内容不会失败:

NPN_GetProperty(aInstance, windowObject, NPN_GetStringIdentifier("frames"), &frames)) 

但是以下失败,返回一个null元素:

NPN_Invoke(aInstance, NPVARIANT_TO_OBJECT(frames), NPN_GetStringIdentifier("item"), &index, 1, &currentFrame) 

我还尝试检索标记为IFRAME的所有元素,但访问contentWindowcontentDocument属性会返回一个void元素。

还有其他方法吗?

1 个答案:

答案 0 :(得分:1)

最后,我已经弄清楚为什么contentWindow返回了一个void元素。 以下是获取iframe文档的代码:

STRINGZ_TO_NPVARIANT("IFRAME", searchString); 
NPN_Invoke(instanceNPP,NPVARIANT_TO_OBJECT(document), NPN_GetStringIdentifier("getElementsByTagName"), &searchString, 1, &frameCollection);

if (!NPN_GetProperty(instanceNPP, NPVARIANT_TO_OBJECT(frameCollection), NPN_GetStringIdentifier("length"), &lenght))
{
    return;
}

for (int i=0; i<NPVARIANT_TO_INT32(lenght); i++)
{
    INT32_TO_NPVARIANT(i, index);
    if (!NPN_Invoke(instanceNPP, NPVARIANT_TO_OBJECT(frameCollection), NPN_GetStringIdentifier("item"), &index, 1, &frameItem))
    {
        continue;
    }
    if (!NPN_GetProperty(instanceNPP, NPVARIANT_TO_OBJECT(frameItem), NPN_GetStringIdentifier("contentWindow"), &contentWindow))
    {
        continue;
    }
    if (!NPN_GetProperty(instanceNPP, NPVARIANT_TO_OBJECT(contentWindow), NPN_GetStringIdentifier("document"), &frameDocument))
    {
        continue;
    }
    //do something with the frame's document
}