[英]Can I execute a Javascript function inside Spidermonkey and get the return value?
我剛剛開始使用Delphi和Spidermonkey。 以前我會將一個網頁加載到TWebBrowser組件中,並與加載的網頁中的Javascript代碼進行交互。 這很麻煩因為要將值返回給delphi我必須通過Javascript代碼將它們加載到DOM對象中,然后從Delphi檢查DOM以找到該對象並訪問它的value屬性。
使用Spidermonkey,我可以執行特定的Javascript函數並輕松獲得返回值並直接返回Delphi嗎? 如果是這樣,請指出一個有用的快速代碼示例。 Spidermonkey附帶的3個樣本似乎沒有進入這個。
>使用Spidermonkey,我可以執行特定的Javascript函數並輕松獲得返回值並直接返回Delphi嗎?
是的,有可能。 樣品與Delphi XE2 / XE4兼容。
var
recFunction,
recReturnValue,
recJSVar : jsval;
........
//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
//-=- Find entry point to function.
//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
if JS_LookupProperty (TSMJSEngine.Context, TSMJSEngine.Global.JSObject, PAnsiChar (AnsiString (strFunctionToRun)), @recFunction) <> js_true then
begin
//-=- Everything very bad :)
end;
if recFunction.asPtr = nil then
begin
//-=- Everything very bad :)
end;
//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
//-=- Call function
//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
if JS_CallFunctionValue (TSMJSEngine.Context, TSMJSEngine.Global.JSObject, recFunction, 0, nil, @recReturnValue) = Integer (false) then
begin
//-=- Everything very bad :)
end;
//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
//-=- Get returning result (type: string).
//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
strResult := JSValToString (TSMJSEngine.Context, recReturnValue);
我對delphi一無所知,但聽起來你想要設置某種類型的api或路由,以便在前端/后端系統之間進行傳輸。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.