导航:首页 > 文件教程 > delphi读写js文件

delphi读写js文件

发布时间:2024-07-02 07:01:42

① 如何通过js或者vb调用delphi的com组件

MsgBox data data = info.GetData(key, data) key = info.Data //通过属性MsgBox key</script></html>2、js<html><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <title>TestAxObj</title></head><body style="background-color:whitesmoke; margin:5px"> <form method="post" action=""> <object id="tc1" width="200px" height="20px" style="background-color:red;" classid="CLSID:65E6BE73-2814-4B52-850A-939786D009BC"> </object> <script type="text/javascript" language=javascript> var tc1 = document.getElementById("tc1"); var s = "test"; var out = ""; var data1 = ""; tc1.GetData(s, out); data1 = tc1.Data;//属性的方式 alert("属性" + data1); s = tc1.TestData(data1); alert(s);//返回值方式</script></body></html>这里的调用是针对于上篇文章的com编写方法写的调用脚本,大家可以参考来看。其实,这里还有一个问题是没有解决的,本来想通过js脚本实现,delphi中var类型的参数的功能,实现一个数据的改变,例如在 var out = ""; tc1.GetData(s, out);中想实现out值的更改,但是没能实现,所以将out的值传递给其属性,然后访问属性获得结果。 目前js可以使用的方法是通过属性和返回值的方式来处理类似的情况。特意说明在vb中没有这种限制,可以使用这种方式的值的改变。

② 濡備綍鐢―elphi鍦═WebBrowser涓璋冪敤JavaScript

鍦═WebBrowser涓璋冪敤鑴氭湰鐨勫姙娉曟槸璋冪敤Html鏂囨。鐩稿叧鐨勫硅薄绐楀彛涓鐨別xecScript鏂规硶銆傝嚦浜庝粈涔堟槸鍜孒tml Document鐩稿叧鐨勫硅薄绐楀彛锛屽悗闈㈢殑浠g爜涓鐢ㄥ埌鐨処HTMLWindow2灏辨槸銆俥xecScript鍑芥暟瀹氫箟濡備笅锛

function execScript(const code: WideString; const language: WideString): OleVariant;

鍙傛暟code鏄涓涓鑴氭湰鍑芥暟鐨勫畬鏁磋皟鐢ㄥ舰寮忕殑瀛楃︿覆锛屼緥濡傛湁涓涓狫avaScript鍑芥暟瀹氫箟涓猴細
function foo(param1)锛屽垯 code="foo(param1)"銆

鍙傛暟language琛ㄧず鑴氭湰鐨勭被鍨嬶紝渚嬪 language="JavaScript"

棣栧厛锛岃幏鍙栨祻瑙堝櫒缁勪欢鐨勬枃妗e硅薄锛涚劧鍚庨氳繃璇ユ枃妗e硅薄鐨凱arentWindow灞炴ф潵鑾峰彇绐楀彛瀵硅薄銆傛渶鍚庨氳繃璇ョ獥鍙e硅薄鏉ヨ皟鐢╡xecScript鍗冲彲銆備笅闈㈠氨缁欏嚭涓涓绠鍗曠殑瀹炵幇绀轰緥銆

瀹炵幇绀轰緥

uses
MSHTML;

procere TForm1.CallFoo(S: string; I: Integer);
{ Calls JavaScript Foo() function }
var
Doc: IHTMLDocument2; // current HTML document
HTMLWindow: IHTMLWindow2; // parent window of current HTML document
JSFn: string; // stores JavaScipt function call
begin
// Get reference to current document
Doc := WebBrowser1.Document as IHTMLDocument2;
if not Assigned(Doc) then
Exit;
// Get parent window of current document
HTMLWindow := Doc.parentWindow;
if not Assigned(HTMLWindow) then
Exit;
// Run JavaScript
try
JSFn := Format('Foo(''%s'',%d)', [S, I]); // build function call
HTMLWindow.execScript(JSFn, 'JavaScript'); // execute function
except
// handle exception in case JavaScript fails to run
end;
end;

瀹炰緥婕旂ず

鏁翠釜瀹炰緥鍖呮嫭涓ら儴鍒嗭細

缃戦〉鏂囦欢test.html锛氭枃浠跺唴鏈変竴涓狫avaScript鍑芥暟SetFont銆傝ュ嚱鏁伴氳繃涓嬫媺妗嗘潵閫夋嫨瀛椾綋锛岀劧鍚庣偣鍑烩漵et font鈥滄寜閽鏉ユ敼鍙橀〉闈㈠瓧浣撱
Delphi绔绋嬪簭锛氶氳繃TWebbrowser鏉ユ樉绀洪〉闈锛屽苟婕旂ず濡備綍璋冪敤椤甸潰鍐呯殑Javascript鍑芥暟銆

Test.html:

<html>
<head>
<title> Demo for call Javascript from Delphi
</title>
<script type="text/javascript">
<!--
function SetFont(fontname)
{
document.body.style.fontFamily = fontname;
}
-->
</script>
</head>

<body>
demo of calling Javascript from Delphi
<form>
<select size=1 name="selfont">
<option value="Verdana" selected>Verdana</option>
<option value="Arial">Arial</option>
<option value="Courier New">Courier New</option>
<option value="Tahoma">Tahoma</option>
</select>
<input type="button" value="set font" name="btn1"
onclick="SetFont(selfont.value)">
</form>
</body>
</html>

Delphi鎺у埗Javascript

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, OleCtrls, SHDocVw, StdCtrls, Mshtml;

type
TForm1 = class(TForm)
btnCallJS: TButton;
cmbFonts: TComboBox;
WebNav: TWebBrowser;
procere FormShow(Sender: TObject);
procere WebNavDocumentComplete(Sender: TObject;
const pDisp: IDispatch; var URL: OleVariant);
procere btnCallJSClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procere TForm1.FormShow(Sender: TObject);
begin
// Disable button
btnCallJS.Enabled := false;
// Load the Html page
WebNav.Navigate(ExtractFilepath(Application.ExeName)
+'test.html');
end;

procere TForm1.WebNavDocumentComplete(Sender: TObject;
const pDisp: IDispatch; var URL: OleVariant);
begin
// When complete loading Html page, enable button
btnCallJS.Enabled := true;
end;

// Call the Javascript in Html page
procere TForm1.btnCallJSClick(Sender: TObject);
var
// current Html document
Doc : IHtmlDocument2;
// parent window of current Html document
HtmlWnd : IHtmlWindow2;
// Javascript function name including arguments
JsFnc : string;
begin
// Get reference to current document
Doc := WebNav.Document as IHtmlDocument2;
if not assigned(Doc) then
exit;
// Get parent window of current Html document
HtmlWnd := Doc.parentWindow;
if not assigned(HtmlWnd) then
exit;
// Run Javascript
try
JsFnc := 'SetFont(''' + trim(cmbFonts.Text) + ''')';
HtmlWnd.execScript(JsFnc, 'JavaScript');
except
Showmessage('Call JavaScript failed!');
end;
end;

end.

③ DELPHI如何调用页面里的JS

var
js: OleVariant;
str: string;
begin
js := CreateOleObject('ScriptControl'); // 创建组件
js.Language := 'JavaScript'; // 指定组件所使用的语言,也可以是VBScript
js.AddCode(Memo1.Text); // 加入JS代码,如上面的代码
str := js.Eval('getTime()');// getTime() function from JS
ShowMessage(str);

end;

Memo1.text内容

function getTime(){
var d, s = "";
var c = "";
d = new Date();
s += d.getYear()+c;
s += (d.getMonth() + 1) + c;
s += d.getDate() + c;
s += d.getHours() + c;
s += d.getMinutes() + c;
s += d.getSeconds() + c;
s += d.getMilliseconds();
return s;
}

④ delphi怎么得到下面的json数据中的多个节点值

Delphi下解析json可以去下载一个superobject单元,关于这个单元的使用可以网络一下,很好用的

Delphi/Pascal code?

// Sample 2: how to get child type and subobject fields
//
// Leonid Koninin, 02/03/2007
program sample2;
{$APPTYPE CONSOLE}
uses SysUtils, uLkJSON in 'uLkJSON.pas';
var JSon, XJSon :TlkJSONobject; JSonNode :TlkJSONString; JSonNodeList :TlkJSONlist; Str :String; i :Integer;
begin
Str := '{"string1":"one", "string2":"two", '
+'"childobject" : {"objstr1" :"Oone", "objstr2" :"Otwo"},'
+'"childobject2":[{"obj2str1":"2one"},{"obj2str1":"2two"}]}'; writeln(Str);

JSon := TlkJSON.ParseText(Str) as TlkJSONobject; // restore object (parse text)

if not assigned(JSon) then begin // how to obtain type of child
writeln('error: xs not assigned!'); readln; //exit;
end else begin //Field[] is 方式判断类型
if JSon.Field['childobject'] is TlkJSONString then writeln('type: xs is string!'); //string
if JSon.Field['childobject'] is TlkJSONlist then writeln('type: xs is list!'); //list 多个Json子节点
if JSon.Field['childobject'] is TlkJSONobject then writeln('type: xs is object!'); //Oject 单个json子节点

//以下类型,实际不常用
if JSon.Field['childobject'] is TlkJSONnumber then writeln('type: xs is number!'); //数字 value前后不加引号
if JSon.Field['childobject'] is TlkJSONboolean then writeln('type: xs is boolean!'); //boolean
if JSon.Field['childobject'] is TlkJSONnull then writeln('type: xs is null!'); //Null 改为空格值
end;

//Filed[].SelfType 方式判断类型
case JSon.Field['childobject'].SelfType of //the other way (0.93+)
jsString :writeln('other type: xs is string');
jsObject :writeln('other type: xs is object');
jsList :writeln('other type: xs is list');

jsNumber :writeln('other type: xs is number');
jsBoolean :writeln('other type: xs is boolean');
jsNull :writeln('other type: xs is null');
jsBase :writeln('other type: xs is base');
end;
writeln('self-type name: ', JSon.Field['childobject'].SelfTypeName);

XJSon :=JSon.Field['childobject'] as TlkJSONobject; //JSON中,有下级节点的,不像xml那样称为节点对象,仍称为JSOn对象

//Field[] as方式取值,完美
JSonNode :=XJSon.Field['objstr1'] as TlkJSONString; //we know what xs chilren are strings
writeln(JSonNode.value);

JSonNode :=XJSon.Field['objstr2'] as TlkJSONstring;
writeln(JSonNode.value);

//getstring,快速
writeln(XJSon.getString('objstr1')); //new v0.99 +syntax!
writeln(XJSon.getString('objstr2')); readln;

JSon.Free;
end.

阅读全文

与delphi读写js文件相关的资料

热点内容
QQ唯美手势密码 浏览:797
微信pc调试工具 浏览:902
iphone高清资源 浏览:211
视频的数据速率最低是多少 浏览:919
大数据应用的文献综述 浏览:664
安卓手机型号修改文件 浏览:957
什么是网站地图sitemap 浏览:660
军校编程属于什么编制 浏览:963
网络电视源码 浏览:509
win10文件管理布局 浏览:4
linux普通用户 浏览:228
有哪些诈骗APP 浏览:672
生物医药网站优化如何 浏览:840
什么app能让孩子快速学习 浏览:103
脚本文件是干什么的 浏览:726
345盘密码 浏览:903
h110m装机教程 浏览:237
怎样把微信内容转到文件夹 浏览:66
网络直播人气如何 浏览:206
华为手机录屏的文件存在哪里 浏览:745

友情链接