[英]jsc_value_object_invoke_method() with JSCValue* object not working
我正在嘗試從 C++ 代碼調用一些 jQuery 函數。 我所做的是將整個 jQuery 庫復制為一個字符串,並使用 jsc_context_evaluate() 來訪問所有 jQuery 方法。
這是一個帶有字符串的非特定精簡版本,它工作正常:
JSCValue* jsVar = jsc_context_evaluate(jsCtx, "$('some-div')");
jsc_value_object_invoke_method(jsVar, "html", G_TYPE_STRING, "foo", G_TYPE_NONE);
這會將“some-div”的內容更改為“foo”。 (我知道 'some-div' 應該真的有一個 '.' 或 '#' 但它只是為了表示)
當我嘗試使用一個對象時,該功能不起作用。
JSCValue* jsVar = jsc_context_evaluate(jsCtx, "$('some-div')");
JSCValue* jsDiv = jsc_context_evaluate(jsCtx, "$('some-other-div')");
jsc_value_object_invoke_method(jsVar, "html", G_TYPE_OBJECT, jsDiv, G_TYPE_NONE);
而不是 'some-div' 獲取 'some-other-div' 的內容,什么也沒有發生。 當我打印的返回值...invoke_method()
作為一個字符串jsc_value_to_string()
我得到了一個未定義。 我用其他 jQuery 方法(如add
嘗試過它,但結果相同,該函數返回 undefined 並且沒有任何變化。
我要做的第一件事是檢查函數調用是否沒有發出異常。 顯然jsc_context_evaluate
正在工作,所以我只檢查最后一個函數調用:
JSCValue* jsVar = jsc_context_evaluate(jsCtx, "$('some-div')");
JSCValue* jsDiv = jsc_context_evaluate(jsCtx, "$('some-other-div')");
jsc_value_object_invoke_method(jsVar, "html", G_TYPE_OBJECT, jsDiv, G_TYPE_NONE);
JSCException* exception = jsc_context_get_exception(jsCtx);
if (exception != NULL) {
g_print("%s: %s\n", jsc_exception_get_name(exception),
jsc_exception_get_message(exception));
free(exception);
return;
}
這可能會給你一個關於正在發生的事情的暗示。
我懷疑問題在於您將對象傳遞給 jQuery 的函數html
。 據jQuery的文檔( https://www.geeksforgeeks.org/jquery-html-method/ ),在html
功能,可以接收3種類型的參數:
jsDiv
是一個對象。 我認為您需要傳遞其內容,如下所示:
JSCValue* jsVar = jsc_context_evaluate(jsCtx, "$('some-div')");
JSCValue* jsDiv = jsc_context_evaluate(jsCtx, "$('some-other-div')");
JSCValue* content = jsc_value_object_invoke_method(jsDiv, "html", G_TYPE_NONE);
char* contentString = jsc_value_to_string(jsCtx, content);
jsc_value_object_invoke_method(jsVar, "html", G_TYPE_OBJECT, contentString, G_TYPE_NONE);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.