gpt4 book ai didi

javascript - 无法从 JavaScript 调用 Delphi ActiveX 方法

转载 作者:行者123 更新时间:2023-12-03 03:14:28 25 4
gpt4 key购买 nike

我对 Delphi ActiveX 控件有疑问。我创建了一个 ActiveX 库,然后创建了一个 ActiveX 表单。我定义了一个函数,我想从 JavaScript 调用这个函数。但我不能。 JavaScript 抛出错误:“对象不支持属性或方法‘Method1’”。

这是 HTML 代码:

<OBJECT id="GetDocsActiveX" classid="clsid:A03962E6-6030-46C0-988D-ADE26BC4BACD" codebase="GetDocs.ocx#version=1.0">
<PARAM NAME="Color" VALUE="13417386">
</OBJECT>

这是Delphi代码*.ridl文件

interface IGetDocs: IDispatch
{
[id(0x000000E8)]
HRESULT _stdcall Method1(void);
};

这是*_TLB.pas文件

IGetDocs = interface(IDispatch)
['{8F2BF1C6-98A5-4D6B-A43E-890698A3C91D}']
procedure Method1; safecall;
end;

这是带有实现的文件

unit GetDocsU;
{$WARN SYMBOL_PLATFORM OFF}
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ActiveX, AxCtrls, GetDocs_TLB, StdVcl, Vcl.StdCtrls, ShellApi, Vcl.XPMan,
IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, IdHTTP;

type
TGetDocs = class(TActiveForm, IGetDocs)
protected
procedure Method1; safecall;
public
{ Public declarations }
procedure Initialize; override;
end;

implementation

uses ComObj, ComServ;
{$R *.DFM}
procedure TGetDocs.Method1;

begin
MessageDlg('HI from active x', mtInformation, [mbOK], 0, mbOK);
end;

end.

任何人都可以帮助解决这个问题吗?我尝试将方法移动到已发布部分的公共(public)部分,但没有成功。

编辑这是java脚本

<script type="text/javascript">
try {
var obj = $("#GetDocsActiveX");
if (obj) {
obj.Method1();
} else {
alert("Object is not created!");
}
} catch (ex) {
alert("Some error happens, error message is: " + ex.message);
}
</script>

最佳答案

我至少注意到这个错误:

var obj = $("#GetDocsActiveX");

这看起来像一行 jQuery(或类似的库)来获取 id 为“GetDocsActiveX”的元素。但 jQuery 并不直接返回元素。它返回一个包装元素集合的 jQuery 对象。您尝试调用该 jQuery 对象的方法,而不是您正在查找的实际元素。

有多种方法可以从 jQuery 集合中解开该元素,但我认为使用纯 JavaScript 获取对象更容易:

var obj = document.getElementById("GetDocsActiveX");

或者如果您喜欢使用选择器:

var obj = document.querySelector("#GetDocsActiveX");

关于javascript - 无法从 JavaScript 调用 Delphi ActiveX 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46826465/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com