簡體   English   中英

如何訪問 JSCValue 對象的屬性

[英]How to access a JSCValue Object's properties

使用以下代碼:

#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 我對此有幾個問題。

  1. 如何獲得 JSCValue 的 class 而無需檢查它?
  2. 為什么當前檢查不起作用?
  3. 如何訪問 object 的其他屬性? 當我試圖增加索引時,我得到的只是未定義的,當我使用jsc_value_object_enumerate_properties()時,我在 memory 中只有一個地址。 我的目標是訪問 CSS、標簽、ID/類、父元素和子元素。 我不知道如何將 char** 轉換為可用信息。

按順序回答您的問題:

  1. 查看API 文檔,目前似乎不可能。 jsc-glib API 相當有限。

  2. 因為result是包含 object 的數組,所以在 JavaScript 術語中,您正在評估[body] instanceof HTMLBodyElement而不是body instanceof HTMLBodyElement

  3. 沒有看到你的代碼就不可能確定,但很可能你在數組上調用jsc_value_object_enumerate_properties() ,並且該數組只有一個可枚舉屬性,即索引 0。如果你在 body 元素上調用它,那么你應該能夠通過將 function 返回的字符串數組中的每個字符串傳遞給jsc_value_object_get_property()來獲取每個屬性的值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM