[转]javascript中调用delphi函数
以下是test.htm页的内容
首先定义一个插件对象
<object id="Mapupload" name="Mapupload" width="0" height="0" classid="clsid:045FA9B9-B373-4D4C-AE76-128A19A4B6AE">
</object>
<script type="text/javascript">
//此函数打开activexform窗体并为activeform的属性赋值
function loadUploader(){
if(window.ActiveXObject){
try{
document.getElementById("Mapupload").picname='20060531'; //为对象赋值
document.getElementById("Mapupload").open(); //调用对象的open方法
}
catch(e){
}
}
else{
}
}
</script>
<TEXTAREA style="WIDTH: 400px; HEIGHT: 226px" name="" id='Content' rows=20 cols=40></TEXTAREA>
<button name="start" type="button" onclick="loadUploader();"></button>
<!-- script函数 -->
<script Language=Javascript>
function InsertHTML()
{
var UrlStr = document.getElementById("MapUpload").Content;
alert(UrlStr);
}
</script>
<!-- 定义Delphi中访问的OnCall事件对应的Script方法 -->
定义对象的OnInsertHTML事件为activeform的OninsertHTML事件,并触发页面的inserthtml方法
<SCRIPT FOR="Mapupload"
EVENT="OnInsertHTML()"
LANGUAGE="JScript">
<!-- insert script commands -->
InsertHTML();
</SCRIPT>
</object>
<script type="text/javascript">
//此函数打开activexform窗体并为activeform的属性赋值
function loadUploader(){
if(window.ActiveXObject){
try{
document.getElementById("Mapupload").picname='20060531'; //为对象赋值
document.getElementById("Mapupload").open(); //调用对象的open方法
}
catch(e){
}
}
else{
}
}
</script>
<TEXTAREA style="WIDTH: 400px; HEIGHT: 226px" name="" id='Content' rows=20 cols=40></TEXTAREA>
<button name="start" type="button" onclick="loadUploader();"></button>
<!-- script函数 -->
<script Language=Javascript>
function InsertHTML()
{
var UrlStr = document.getElementById("MapUpload").Content;
alert(UrlStr);
}
</script>
<!-- 定义Delphi中访问的OnCall事件对应的Script方法 -->
定义对象的OnInsertHTML事件为activeform的OninsertHTML事件,并触发页面的inserthtml方法
<SCRIPT FOR="Mapupload"
EVENT="OnInsertHTML()"
LANGUAGE="JScript">
<!-- insert script commands -->
InsertHTML();
</SCRIPT>
delphi中仅需在_TLB中声明OninsertHTML事件,Open方法,content属性即可
procedure TFeSendFrmX.open;
begin
hnd := self.handle;
FrmUpLoad := TFrmUpLoad.Create(self);
with FrmUpload do
begin
ShowModal;
Destroy;
end;
end;
procedure TFeSendFrmX.ShowContent;
begin
FEvents.OnInsertHTML;
end;
function TFeSendFrmX.Get_Content: WideString;
begin
Result := FrmUpLoad.Code;
end;
begin
hnd := self.handle;
FrmUpLoad := TFrmUpLoad.Create(self);
with FrmUpload do
begin
ShowModal;
Destroy;
end;
end;
procedure TFeSendFrmX.ShowContent;
begin
FEvents.OnInsertHTML;
end;
function TFeSendFrmX.Get_Content: WideString;
begin
Result := FrmUpLoad.Code;
end;