soui使用wke时,设置js回调注意事项

时间:2023-12-25 09:22:07

wke响应网页js函数调用时注意:

必须等网页加载完成后,才能通过SetJsFunc设置js函数与c++回调的对应。网页未加载就设置,不会响应c++函数。

示例代码:

  1. wkeJSData* data = new wkeJSData();
  2. memset(data, 0, sizeof(wkeJSData));
  3. strcpy(data->typeName, (strfunc::I2A(i) + "_Function").c_str());
  4. data->callAsFunction = js_callAsFunction;
  5. data->finalize = js_releaseFunction;
  6. pWebCtrl->SetJsFunc("initFromClient", data);
  1. static wkeJSValue js_callAsFunction(wkeJSState* es, wkeJSValue object, wkeJSValue* args, int argCount)
  2. {
  3. wkeJSData *temp = wkeJSGetData(es, object);
  4. wchar_t text[1025] = { 0 };
  5. wchar_t title[1025] = { 0 };
  6. if (argCount >= 1)
  7. wcsncpy(text, wkeJSToTempStringW(es, wkeJSParam(es, 0)), 1024);
  8. if (argCount >= 2)
  9. wcsncpy(title, wkeJSToTempStringW(es, wkeJSParam(es, 1)), 1024);
  10. return wkeJSInt(es, 0);
  11. }

其中wkeJSData *temp = wkeJSGetData(es, object);获取到的data,

就是wkeJSData* data = new wkeJSData();

  1. static void js_releaseFunction(wkeJSData* data)
  2. {
  3. delete data;
  4. }

通过上面的函数,对new的数据删除