我正在尝试调用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"));
答案 0 :(得分:0)
您没有指定您正在使用的浏览器;我猜你可能正在使用IE浏览器。如果没有,这可能没有帮助。
有一些类似的方法不能直接从IE中的插件调用,你必须使用正确的接口。这就是调用该方法的special method on FB::DOM::Element原因。
尝试类似:
std::vector<FB::DOM::ElementPtr> nameList = DOMdoc->getElementsByTagName("name1");
我假设,虽然你没有指明,你通过调用m_host->getDOMDocument()
来获得DOMdoc