使用以下代码:
#include <webkit2/webkit-web-extension>
/* Skipping through a lot of code */
{
JSCValue* result = jsc_context_evalutate(jsCtx, "document.getElementsByTagName('body')", -1);
std::cout << jsc_value_to_string(jsc_value_object_get_property_at_index(result, 0)) << "\n";
if (jsc_value_object_is_instance_of(result, "HTMLBodyElement"))
std::cout << "Instance of HTMLBodyElement\n";
}
我打印了[object HTMLBodyElement]
,但没有打印Instance of HTMLBodyElement
。我对此有一些疑问。
jsc_value_object_enumerate_properties()
时,我在内存中只有一个地址。我的目标是访问CSS,Tag,ID / Class,父元素和子元素。我不知道如何将char **转换为可用信息。答案 0 :(得分:0)
按顺序回答您的问题:
看API documentation,目前看来不可能。 jsc-glib API相当有限。
因为result
是保存对象的数组,所以用JavaScript术语计算的是[body] instanceof HTMLBodyElement
而不是body instanceof HTMLBodyElement
。
在看不到代码的情况下无法确定,但是很有可能您也在数组上调用了jsc_value_object_enumerate_properties()
,并且该数组只有一个可枚举的属性,即索引0。如果您调用它,在body元素上,那么应该可以通过将函数返回的字符串数组中的每个字符串传递到jsc_value_object_get_property()
来获取每个属性的值。