簡體   English   中英

我可以在Spidermonkey中執行Javascript函數並獲取返回值嗎?

[英]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.

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