Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/132.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jsc_value_object_invoke_method(),jsc_value*对象不工作 我试图从C++代码中调用一些jQuery函数。 我所做的是将整个jQuery库作为字符串复制,并使用jsc_context_evaluate()访问所有jQuery方法_Javascript_C++_Webkit_Javascriptcore_Webkitgtk - Fatal编程技术网

Javascript jsc_value_object_invoke_method(),jsc_value*对象不工作 我试图从C++代码中调用一些jQuery函数。 我所做的是将整个jQuery库作为字符串复制,并使用jsc_context_evaluate()访问所有jQuery方法

Javascript jsc_value_object_invoke_method(),jsc_value*对象不工作 我试图从C++代码中调用一些jQuery函数。 我所做的是将整个jQuery库作为字符串复制,并使用jsc_context_evaluate()访问所有jQuery方法,javascript,c++,webkit,javascriptcore,webkitgtk,Javascript,C++,Webkit,Javascriptcore,Webkitgtk,这是一个带有字符串的非特定精简版本,它可以正常工作: JSCValue*jsVar=jsc_context_evaluate(jsCtx,“$('some-div')”); jsc_值_对象_调用_方法(jsVar,“html”,G_类型_字符串,“foo”,G_类型_无); 这将“somediv”的内容更改为“foo”。(我知道“some div”应该有“.”或“#”但这只是为了表示) 当我尝试使用一个对象时,该函数不起作用 JSCValue*jsVar=jsc_context_evalua

这是一个带有字符串的非特定精简版本,它可以正常工作:

JSCValue*jsVar=jsc_context_evaluate(jsCtx,“$('some-div')”);
jsc_值_对象_调用_方法(jsVar,“html”,G_类型_字符串,“foo”,G_类型_无);
这将“somediv”的内容更改为“foo”。(我知道“some div”应该有“.”或“#”但这只是为了表示)

当我尝试使用一个对象时,该函数不起作用

JSCValue*jsVar=jsc_context_evaluate(jsCtx,“$('some-div')”);
JSCValue*jsDiv=jsc_context_evaluate(jsCtx,“$('some-other-div')”);
jsc_值_对象_调用_方法(jsVar,“html”,G_类型_对象,jsDiv,G_类型_无);

“somediv”没有得到“someotherdiv”的内容,什么也没有发生。当我将
…invoke_method()
的返回值打印为带有
jsc_value\u to_string()
的字符串时,我没有定义。我尝试了其他jQuery方法,如
add
,但结果是一样的,函数返回未定义,没有任何更改。

我要做的第一件事是检查函数调用是否没有发出异常。显然,
jsc\u context\u 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的doc(),
html
函数可以接收3种类型的参数:

  • null,返回节点的内容
  • 内容(字符串),设置节点的内容
  • 函数,使用函数设置节点的内容
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);

我还想为
add()
函数做这项工作,文档中说它可以接受jQuery对象。我得到的错误是
TypeError:unsupported type GObject
我能够让
html()
函数工作,但不知道如何让对象作为参数工作。因此,如果将
jsDiv
转换为
JSC\u type\u值,我认为这个问题可以得到解决。试试这个:
jsc_值_对象_调用_方法(jsVar,“html”,jsc_类型_值,jsDiv,G_类型_无)现在可以工作了!不知道
JSC_类型_值
被认为是
GType