我正在尝试调用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/>
任何帮助将不胜感激,
谢谢。
update
只是尝试使用getElementsbytagname而没有更多成功:
nameList = DOMdoc->callMethod<std::vector<FB::JSObjectPtr> >("getElementsByTagName", FB::variant_list_of("name1"));
您没有指定您正在使用的浏览器;我猜您可能正在使用IE。如果没有,这可能无济于事。
有一些类似的方法无法直接从IE中的插件调用,您必须使用正确的接口。这就是为什么在FB :: DOM :: element上有一种特殊方法来调用该方法。
尝试类似:
std::vector<FB::DOM::ElementPtr> nameList = DOMdoc->getElementsByTagName("name1");
我假设,尽管您没有指定,但您通过调用m_host->getDOMDocument()
祝你好运