Firebreath - NPAPI - getElementsByName不起作用

时间:2014-02-03 15:31:11

标签: javascript npapi firebreath

我正在尝试调用javascript本机方法getElementsByName来检索具有相同名称(name =“”)的所有元素的列表。

以下是我在Internet Explorer中使用的代码:

std::vector<FB::JSObjectPtr> nameList = DOMdoc->callMethod<std::vector<FB::JSObjectPtr> >("getElementsByName", FB::variant_list_of("name1");

未返回任何结果。通过在javascript中直接执行该方法,我有正确数量的项目:

document.getElementsByName("name1")

我也尝试直接使用getElementById,但它只能返回一个元素:

DOMdoc->getElementById("name1")->getJSObject();

不幸的是,我需要检索例如radiobutton的元素列表:

<input type="radio" name="name1" value="value1">Radio 1<br/>
<input type="radio" name="name1" value="value2">Radio 2<br/>
<input type="radio" name="name1" value="value3">Radio 3<br/>

非常感谢任何帮助,

感谢。

更新

尝试使用getElementsByTagName但没有取得更多成功:

nameList = DOMdoc->callMethod<std::vector<FB::JSObjectPtr> >("getElementsByTagName", FB::variant_list_of("name1"));

1 个答案:

答案 0 :(得分:0)

您没有指定您正在使用的浏览器;我猜你可能正在使用IE浏览器。如果没有,这可能没有帮助。

有一些类似的方法不能直接从IE中的插件调用,你必须使用正确的接口。这就是调用该方法的special method on FB::DOM::Element原因。

尝试类似:

std::vector<FB::DOM::ElementPtr> nameList = DOMdoc->getElementsByTagName("name1");

我假设,虽然你没有指明,你通过调用m_host->getDOMDocument()来获得DOMdoc

祝你好运