【IT专家】在COM组件中调用JavaScript函数
JavaScript引擎研究与C++ 互相调用
JavaScript引擎研究与C、C++与互调用博客分类:软件程式-JavaScriptjavascriptc++脚本1.概要2.Google V82.1. 介绍Google Chrome是google 2008年9月发布的浏览器,Chrome的网页渲染部分使用的是Webkit的渲染引擎,Chrome的JavaScript引擎就是大名鼎鼎的V8了。
V8是C++语言编写的,是开放源码的,是所有的JavaScript引擎中速度最块的。
其开源项目地址为:/p/v8。
V8对外的API接口是C++的接口。
V8的API定义了几个基本概念:句柄(handle),作用域(scope),上下文环境(Context)。
模板(Templates),了解这些基本的概念才可以使用V8。
l上下文环境Context就是脚本的运行环境,JavaScript的变量、函数等都存在于上下文环境Context中。
Context可以嵌套,即当前函数有一个Context,调用其它函数时如果又有一个Context,则在被调用的函数中javascript是以最近的Context为准的,当退出这个函数时,又恢复到了原来的Context。
l句柄(handle)就是一个指向V8对象的指针,有点像C++的智能指针。
所有的v8对象必须使用句柄来操作。
没有句柄指向的V8对象,很快会被垃圾回收器回收了。
l作用域(scope)是句柄的容器,一个作用域(scope)可以有很多句柄(handle)。
当离开一个作用域(scope)时,所有在作用域(scope)里的句柄(handle)都会被释放了。
l模板(Templates)分为函数模板和对象模板,是V8对JavaScript的函数和对象的封装。
方便C++语言操作JavaScript的函数和对象。
l V8 API定义了一组类或者模板,用来与JavaScript的语言概念一一对应。
比如:V8的Function模板与JavaScript的函数对应V8的Object类与JavaScript的对象对应V8的String类与JavaScript的字符对应V8的Script类与JavaScript的脚本文本对应,它可以编译并执行一段脚本。
JavaScript+OCX+COM组件,实现网页对客户端DLL的调用
JavaScript+OCX+COM组件,实现网页对客户端DLL的调用(完整步骤)一、通过PB生成COM组件1、创建非可视用户对象uo_ testdll代码:public function string test_dll (string pname);String setupmessagebox("输入参数",pname)setup =ProfileString("C:\testdll\testdll.ini", "setup", "name", "没有设置")messagebox("本机参数",setup)FileCopy ("C:\testdll\testdll.ini" , "C:\testdll\testdll_"+String(Randomize (100))+".ini", FALSE) setProfileString("C:\testdll\testdll.ini","setup", "name", pname)return "我来自本机:"+setup +","+pnameend function2、创建COM组件:p_testdllA、选择对象:B、设置属性(选择生成的dll文件,两个new分别新建,选择构建完备注册组件选项)(两个new分别新建)(选择包含组件的库)C、发布,点击deploy执行3、注册dll文件:将依赖文件pbvm90.dll,libjsybheap.dll,libjcc.dll和testdll.dll放在同一目录,执行regsvr32 testdll.dll二、V B生成OCX控件hello_uo.ocx(选择ActiveX控件)(选择引用DLL)脚本:Private Sub Command1_Click()MsgBox uo_test(Text1.Text) + "---" + uo_test1(Text1.Text) End SubPublic Function uo_test(pname As String) As StringDim obj As ObjectSet obj = CreateObject("PB90.testdll")Dim result As Stringresult = obj.test_dll(pname)uo_test = resultEnd FunctionPublic Function uo_test1(pname As String) As String uo_test1 = "我来自VB:" + pnameEnd Function(选择生成)注册:regsvr32 hello_uo.ocx三、J avaScript调用OCX控件(找到OCX的id)代码:<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /></head><body>输入参数:<input type="text" id="iii" value="1">返回结果:<input type="text" id="rrr" value="2"></input><input type="button" onclick="javascript:runOcx()" value="测试"><OBJECT id="TestOcx" name="TestOcx" classid="CLSID:A56939E4-596C-4A86-8814-F4CBC6DE5F80" width="0"height="0"> </OBJECT><script>function runOcx(){var ret1 = TestOcx.uo_test(document.getElementById("iii").value);var ret2 = TestOcx.uo_test1(document.getElementById("iii").value);document.getElementById("rrr").value = ret1 + "---" + ret2;}</script></body></html>执行结果:点击确定:点击测试:客户端配置文件:完。
Javascript自动执行函数(立即调用函数)
Javascript⾃动执⾏函数(⽴即调⽤函数)开头:各种原因总结⼀下javascript中的⾃动执⾏函数(⽴即调⽤函数)的⼀些⽅法,正⽂如下在Javascript中,任何function在执⾏的时候都会创建⼀个执⾏上下⽂,因为function声明变量和function有可能只在该function内部,这个上下⽂,在调⽤function的时候,提供⼀些简单的⽅式来创建⾃由变量或私有⼦function。
eg:// 由于该function⾥返回了另外⼀个function,其中这个function可以访问⾃由变量i// 所有说,这个内部的function实际上是有权限可以调⽤内部的对象。
function makeCounter() {// 只能在makeCounter内部访问ivar i = 0;return function () {console.log(++i);};}// 注意,counter和counter2是不同的实例,分别有⾃⼰范围内的i。
var counter = makeCounter();counter(); // logs: 1counter(); // logs: 2var counter2 = makeCounter();counter2(); // logs: 1counter2(); // logs: 2alert(i); // 引⽤错误:i没有defind(因为i是存在于makeCounter内部)。
正⽂核⼼1、Javascript⽅法:在声明类似function foo(){}或var foo = function(){}函数的时候,通过在后⾯加个括弧就可以实现⾃执⾏,例如foo(),看代码:// 因为想下⾯第⼀个声明的function可以在后⾯加⼀个括弧()就可以⾃⼰执⾏了,⽐如foo(),// 因为foo仅仅是function() { /* code */ }这个表达式的⼀个引⽤var foo = function(){ /* code */ }// ...是不是意味着后⾯加个括弧都可以⾃动执⾏?function(){ /* code */ }(); // SyntaxError: Unexpected token (上述代码,如果甚⾄运⾏,第2个代码会出错,因为在解析器解析全局的function或者function内部function关键字的时候,默认是认为function声明,⽽不是function表达式,如果你不显⽰告诉编译器,它默认会声明成⼀个缺少名字的function,并且抛出⼀个语法错误信息,因为function声明需要⼀个名字。
js 调用函数内部的函数
js 调用函数内部的函数如何在 JavaScript 中调用函数内部的函数在JavaScript 中,函数是一种非常重要的概念,它可以帮助我们组织和重用代码。
而在函数内部,我们也可以定义其他函数,这些函数被称为“内部函数”或“嵌套函数”。
调用函数内部的函数可以帮助我们更好地组织代码,并且可以避免全局变量的污染。
本文将介绍如何在JavaScript 中调用函数内部的函数,并提供一些示例代码来帮助读者更好地理解。
在JavaScript 中,我们可以通过两种方式来调用函数内部的函数:在外部函数中直接调用内部函数,或者将内部函数作为外部函数的返回值,然后在外部调用返回的函数。
我们来看看如何在外部函数中直接调用内部函数。
我们可以在外部函数中定义一个内部函数,并在需要的时候直接调用它。
下面是一个简单的示例:```function outerFunction() {function innerFunction() {console.log("这是内部函数");}console.log("这是外部函数");innerFunction();}outerFunction();```在上面的代码中,我们首先定义了一个外部函数 `outerFunction`,然后在这个函数内部又定义了一个内部函数`innerFunction`。
在外部函数中,我们首先打印了一条消息,然后调用了内部函数。
当我们调用外部函数时,会首先打印外部函数的消息,然后再打印内部函数的消息。
另一种方式是将内部函数作为外部函数的返回值,然后在外部调用返回的函数。
下面是一个示例:```function outerFunction() {function innerFunction() {console.log("这是内部函数");}console.log("这是外部函数");return innerFunction;}var inner = outerFunction();inner();```在上面的代码中,我们同样定义了一个外部函数`outerFunction` 和一个内部函数`innerFunction`。
易语言调用js方法
易语言调用js方法在易语言中调用JavaScript方法可以通过使用IE内核的COM 组件来实现。
首先,你需要创建一个IE浏览器对象,然后通过该对象来执行JavaScript代码。
下面是一个简单的示例代码来演示如何在易语言中调用JavaScript方法:创建 IE浏览器对象:ie.ie = 创建对象("InternetExplorer.Application")。
ie->Visible = 1。
ie->Navigate("about:blank")。
等待(ie->ReadyState == 4, 1000)。
ie->Document->Script->eval("alert('Hello from JavaScript!')")。
销毁对象(ie)。
在这个示例中,我们首先创建了一个IE浏览器对象,并设置其可见性。
然后我们让浏览器导航到一个空白页面,并等待页面加载完成。
接下来,我们使用`ie->Document->Script->eval`方法来执行JavaScript代码`alert('Hello from JavaScript!')`,这样就可以在易语言中调用JavaScript方法了。
需要注意的是,由于这种方法是通过IE浏览器对象来执行JavaScript代码的,所以需要保证计算机上安装了IE浏览器,并且IE浏览器的安全设置允许执行JavaScript代码。
另外,由于这种方法依赖于IE浏览器,所以在一些现代化的环境中可能不够稳定和可靠。
除了使用IE内核的COM组件,还可以考虑使用一些第三方的库或者工具来实现易语言与JavaScript的交互,比如使用ActiveX控件或者调用外部的JavaScript解释器等。
但是需要注意的是,这些方法可能需要额外的学习和配置,并且在不同的环境中可能会有一些兼容性和稳定性的问题。
JS函数调用(4种方法)
JS函数调⽤(4种⽅法)提供了 4 种函数调⽤:⼀般形式的函数调⽤、作为对象的⽅法调⽤、使⽤ call 和 apply 动态调⽤、使⽤ new 间接调⽤。
⼀般形式的函数调⽤在默认状态下,函数是不会被执⾏的。
使⽤⼩括号()可以激活并执⾏函数。
在⼩括号中可以包含零个或多个参数,参数之间通过逗号进⾏分隔。
⽰例1在下⾯⽰例中,使⽤⼩括号调⽤函数,然后直接把返回值传⼊函数,进⾏第⼆次运算,这样可以节省两个临时变量。
1. function f(x,y) { //定义函数2. return x * y; //返回值3. }4. console.log(f(f(5,6), f(7,8))); //返回1680。
重复调⽤函数⽰例2如果函数返回值为⼀个函数,则在函数调⽤时可以使⽤多个⼩括号反复调⽤。
1. function f(x,y) { //定义函数2. return function () { //返回函数类型的数据3. return x * y;4. }5. }6. console.log(f(7,8) ()); //返回56,反复调⽤函数⽰例3设计递归调⽤函数,即在函数内调⽤⾃⾝,这样可以反复调⽤,但最终返回的都是函数⾃⾝。
1. function f() { //定义函数2. return f; //返回函数⾃⾝3. }4. console.log(f() () () () () () () () () () () ()); //返回函数⾃⾝当然,上述设计⽅法在实际开发中没有任何应⽤价值,不建议使⽤。
作为对象的⽅法调⽤当⼀个函数被设置为对象的属性值时,称之为⽅法。
使⽤点语法可以调⽤⼀个⽅法。
⽰例下⾯⽰例创建⼀个 obj 对象,它有⼀个 value 属性和⼀个 increment 属性。
increment ⽅法接收⼀个可选参数,如果该参数不是数字,那么默认使⽤数字 1。
1. var obj = {2. value : 0,3. increment : function (inc) {4. this.value += typeof inc === 'number' ? inc :1;5. }6. }7. obj.increment();8. console.log(obj.value); //19. obj.increment(2);10. console.log(obj.value); //2使⽤点语法可以调⽤对象 obj 的⽅法 increment,然后通过 increment ⽅法改写 value 属性的值。
.net程序设计——考试题库及答案
收藏 A. ! B. &
C. = D. +
回答错误!正确答案: B
当在程序中执行哪个语句时,将结束所在循环语句的执行
收藏 A. break B. catch C. continue D. end
回答错误!正确答案: A
C#中,派生类只能从_____个类中继承。
收藏 A. 两个 B. 任意多个 C.
收藏 A. params 修饰符可以与 ref 和 out 修饰符组合起来使用 B. 若形参表中含一个参数数组,则该参数数组必须位于形参列表的最后; C.
参数数组必须是一维数组 D. 在方法声明中的 params 关键字之后不允许任何其他参数,并且在方法声明中只允许一个 params 关键字
回答错误!正确答案: A
收藏 A. 数据绑定 B. 数据相关控件 C. 顺序工作流
回答错误!正确答案: A
Class View 工具的目的是从__ 角度显示当前项目里的所有类型。
收藏 A. 面向环境 B. 面向对象 C. 面向内容 D. 面向过程
回答错误!正确答案: B
有关 LINQ 查询表达式另一个重要的地方是在我们迭代内容之前,他们不会真 正的运算,这叫做__ 。
收藏 A. 延迟执行 B. 响应文件 C. 验证控件 D. 业务流程
回答错误!正确答案: A
关于属性与索引器的区别,以下哪种说法不正确
收藏 A. 索引器没有名称 B. 索引器的类型和集合元素的类型一致 C. 索引器至少有一个参数 D. 一个类中只能有一个索引器
回答错误!正确答案: D
__ 是一个运行库类型发现的过程。
一个 D. 一个不能
回答错误!正确答案: C
net core 调用js 方法
net core 调用js 方法.NET Core调用JavaScript方法介绍在开发过程中,经常会遇到需要在.NET Core应用程序中调用JavaScript方法的情况。
这可以通过使用一些技术和库来实现,本文将详细介绍.NET Core调用JavaScript方法的各种方法。
方法一:使用JS Interop1. 添加依赖在.NET Core项目中,首先需要添加对包的依赖。
可以通过NuGet 包管理器来安装该包。
2. 声明JavaScript函数在JavaScript文件中声明需要在.NET Core中调用的函数。
例如,在文件中创建一个名为”myFunction”的函数:function myFunction() {alert("Hello from JavaScript!");}3. 使用IJSRuntime接口在使用JavaScript函数的.NET Core控制器或视图模型中注入IJSRuntime接口。
在构造函数中添加以下代码:private readonly IJSRuntime _jsRuntime;public MyController(IJSRuntime jsRuntime){_jsRuntime = jsRuntime;}4. 调用JavaScript函数在需要调用JavaScript函数的方法中,使用以下代码将函数名和参数传递给IJSRuntime接口的InvokeAsync方法:public async Task<IActionResult> MyAction(){await _<object>("myFunction");return View();}方法二:使用SignalR1. 添加依赖在.NET Core项目中,首先需要添加对包的依赖。
可以通过NuGet 包管理器来安装该包。
2. 创建Hub在.NET Core应用程序中创建一个SignalR Hub。
c后台调用js方法
c后台调用js方法c 后台调用js方法(一)1. 用Response.Write方法代码如下:Response.Write(“scripttype='text/javascript'alert("__");/script此方法缺陷就是不能调用脚本文件中的自定义的函数,只能调用内部函数,具体调用自定义的函数只能在Response.Write写上函数定义,比如Response.Write("script type='text/javascript'function myfun(){}/script2.用ClientScript类代码如下:在想调用某个javascript脚本函数的地方添加代码,注意要保证MyFun已经在脚本文件中定义过了。
ClientScript.RegisterStartupScript(ClientScript.GetType(), "myscript", "scriptMyFun();/script这个方法比Response.Write更方便一些,可以直接调用脚本文件中的自定义函数。
1/ 53.普通的添加控件的Attributes属性对于普通按钮就是:Button1.Attributes.Add("onclick","MyFun();");只能在Onload中或类似于onload的初始化过程中添加才有效。
而且是先执行脚本函数,无法改变执行顺序。
注意,以上所有方法中,后台代码都不能有转化当前页的代码,比如Redirect等,要把转页代码放在脚本里面c 后台调用js方法(二)1. 用Response.Write方法写入脚本比如在你单击按钮后,先操作数据库,完了后显示已经完成,可以在最后想调用的地方写上Response.Write("script type='text/javascript'alert();/script这个方法有个缺陷就是不能调用脚本文件中的自定义的函数,只能调用内部函数,具体调用自定义的函数只能在Response.Write写上函数定义,比如Response.Write("script type='text/javascript'function myfun(){...}/script2.用ClientScript类动态添加脚本用法如下:在想调用某个javascript脚本函数的地方添加代码,注意要保证MyFun已经在脚本文件中定义过了。
JavaScript引擎研究与C++ 互相调用
JavaScript引擎研究与C、C++与互调用博客分类:软件程式-JavaScriptjavascriptc++脚本1.概要2.Google V82.1. 介绍Google Chrome是google 2008年9月发布的浏览器,Chrome的网页渲染部分使用的是Webkit的渲染引擎,Chrome的JavaScript引擎就是大名鼎鼎的V8了。
V8是C++语言编写的,是开放源码的,是所有的JavaScript引擎中速度最块的。
其开源项目地址为:/p/v8。
V8对外的API接口是C++的接口。
V8的API定义了几个基本概念:句柄(handle),作用域(scope),上下文环境(Context)。
模板(Templates),了解这些基本的概念才可以使用V8。
l上下文环境Context就是脚本的运行环境,JavaScript的变量、函数等都存在于上下文环境Context中。
Context可以嵌套,即当前函数有一个Context,调用其它函数时如果又有一个Context,则在被调用的函数中javascript是以最近的Context为准的,当退出这个函数时,又恢复到了原来的Context。
l句柄(handle)就是一个指向V8对象的指针,有点像C++的智能指针。
所有的v8对象必须使用句柄来操作。
没有句柄指向的V8对象,很快会被垃圾回收器回收了。
l作用域(scope)是句柄的容器,一个作用域(scope)可以有很多句柄(handle)。
当离开一个作用域(scope)时,所有在作用域(scope)里的句柄(handle)都会被释放了。
l模板(Templates)分为函数模板和对象模板,是V8对JavaScript的函数和对象的封装。
方便C++语言操作JavaScript的函数和对象。
l V8 API定义了一组类或者模板,用来与JavaScript的语言概念一一对应。
比如:V8的Function模板与JavaScript的函数对应V8的Object类与JavaScript的对象对应V8的String类与JavaScript的字符对应V8的Script类与JavaScript的脚本文本对应,它可以编译并执行一段脚本。
C#和JS互相调用
document.form[0].submit();
}
}
</script>
<INPUT onkeypress="SubmitKeyClick()" id="aaa" type="text">
2、后台用request["id"]来获取值;
方法二:可以用cookie或session
javaScript函数中执行C#代码中的函数:
方法一:1、首先建立一个按钮,在后台将调用或处理的内容写入button_click中;
2、在前台写一个js函数,内容为document.getElementById("btn1").click();
方法四:<script language="javascript">
function SubmitKeyClick()
{
if (event.keyCode == 13)
{
event.cancelBubble = true;
event.returnValue = false;
一。C#代码中执行javaScript函数:
方法一:ClientScript.RegisterStartupScript(this.GetType(), "标示(任意string,唯一)", "<script>函数</script>");
方法二:使用Literal类,然后
private void Button2_Click(object sender, System.EventArgs e)
cocos creator调用java方法
cocos creator调用java方法(实用版3篇)目录(篇1)1.COCOS Creator 简介2.Java 方法在 COCOS Creator 中的应用3.调用 Java 方法的步骤4.实例:创建一个简单的 COCOS Creator 项目并调用 Java 方法5.总结正文(篇1)一、COCOS Creator 简介COCOS Creator 是由腾讯公司开发的一款用于创建 2D 和 3D 游戏的跨平台游戏开发引擎。
它具有易于上手、功能丰富、性能优越等特点,广泛应用于手机游戏、网页游戏等领域。
COCOS Creator 使用 JavaScript 作为主要的编程语言,同时支持 C++和 TypeScript。
二、Java 方法在 COCOS Creator 中的应用尽管 COCOS Creator 主要使用 JavaScript 作为编程语言,但在某些情况下,您可能需要使用 Java 方法。
例如,当您需要调用一些 Java 库或与 Java 编写的后端服务器进行通信时,使用 Java 方法将变得更加方便。
在这种情况下,COCOS Creator 也提供了相应的支持。
三、调用 Java 方法的步骤要在 COCOS Creator 中调用 Java 方法,您需要按照以下步骤操作:1.创建一个 Java 类,包含您需要调用的方法。
2.将 Java 类打包成.jar 文件。
3.在 COCOS Creator 项目中导入.jar 文件。
4.在 JavaScript 代码中,使用`e()`方法加载 Java 类。
5.使用`Java.call()`方法调用 Java 类的方法。
四、实例:创建一个简单的 COCOS Creator 项目并调用 Java 方法下面是一个简单的实例,展示了如何在 COCOS Creator 项目中调用Java 方法:1.创建一个 Java 类`HelloWorld.java`,包含一个名为`printHelloWorld`的方法:```javapublic class HelloWorld {public void printHelloWorld() {System.out.println("Hello, World!");}}```2.将`HelloWorld.java`打包成.jar 文件。
js 调用函数
js 调用函数JavaScript目前Web发中最流行的脚本语言,而且也是最常用的编程语言之一。
JavaScript最大特色是它具有函数调用能力,让开发者可以完成更多更复杂的编程任务,并保持编程代码更加简洁。
本文介绍 JS 中函数调用的基本概念以及如何在 JS 中实现函数调用。
函数调用是一个非常常见的编程概念,在 JavaScript 中,函数是一种特殊的对象,它可以被调用来执行某种任务,函数调用的过程可以抽象为如下几个步骤:1.义一个函数;2.函数赋予一个变量;3.变量传递给函数;4.函数内部调用传入的变量;5.数立即执行或者在特定时刻执行。
定义函数的基本语法如下:function数名称 (参数1,参数2,……,参数N) {//数体}函数定义后,就可以赋予给一个变量,例如:var数变量 =数名 (参数1,参数2,……,参数N);然后,调用函数变量的函数方法,即可在函数内部执行函数体中的代码:函数变量();在 JavaScript 中,也可以使用闭包来实现函数调用,闭包可以将一个函数中定义的变量与参数封装起来,并让函数在特定的时刻执行:(function (参数1,参数2,……,参数N) {//数体})(参数1,参数2,……,参数N);JavaScript call() apply()法也可以实现函数调用,call()法可以在特定的作用域中调用指定的函数:函数名称.call(作用域,数1,参数2,……,参数N);apply()法也可以实现与 call()法相同的功能,也可以在特定的作用域中调用指定的函数:函数名称.apply(作用域, [参数1,参数2,……,参数N]);JavaScript 中的 bind()法也可以用来实现函数调用,与 call() apply()似,bind()法需要指定特定的作用域和参数:var数实例 =数名称.bind(作用域,数1,参数2,……,参数N);最后,JavaScript支持函数构造器的方式来实现函数调用,函数构造器也需要指定函数的参数:var数实例 = new Function(参数1参数2……参数N函数体函数体的代码中可以使用参数1,参数2,……,参数N变量。
【IT专家】如何从其他页面调用Javascript函数?
本文由我司收集整编,推荐下载,如有疑问,请与我司联系如何从其他页面调用Javascript函数?如何从其他页面调用Javascript函数?[英]How to call a Javascript function from other page? I have 5 javascript functions index.php : 我有5个javascript函数index.php: 1) showMsg(); //this display 50 latest messages 1)showMsg(); //这显示50条最新消息 2) showPopUpBox(); // this I use jquery to load the textbox and send button from typingMsg.php 2)showPopUpBox(); //我使用jquery加载文本框并从typingMsg.php发送按钮 3) hidePopUpBox(); // this hide pop up box 3)hidePopUpBox(); //这个隐藏弹出框 4) checkNewMsg(); // this will be auto reloaded every 5 sec to check if there is new message, it will show the numbers counts of total new messages. 4)checkNewMsg(); //这将每5秒自动重新加载以检查是否有新消息,它将显示新消息总数的数量。
5) ShowNewMsg(); // this function will be called when the user click the “show new messages” button. 5)ShowNewMsg(); //当用户点击“显示新消息”按钮时,将调用此函数。
超链接怎么正确调用javascript函数
超链接怎么正确调⽤javascript函数点击超链接调⽤ JavaScript 函数,⼀般⼈都⽤:复制代码代码如下:<a href="javascript:function();">但这有个缺点,就是点击链接后,页⾯上的GIF动画将静⽌。
试看如下代码:复制代码代码如下:<script type="text/javascript"><!--function Foo(){//do something}//--></script><img src="logo.gif" alt="GIF 动画" /><a href="javascript:Foo();">使 GIF 动画静⽌的链接</a>解决⽅法探讨:复制代码代码如下:<a onclick="javascript:Foo();">链接</a>此时不影响动画显⽰,但⿏标移上去后,⿏标及超链接样式不发⽣变化,虽然可以利⽤样式表来改变⿏标及超链接样式,但毕竟有些繁琐,况且这种思路也不好。
再考查如下代码:复制代码代码如下:<a onclick="javascript:Foo();" href="#">链接</a>我们可以发现,虽然点击链接后不影响动画显⽰,但页⾯总是滚到最上⾯,这种效果也不是我们想要的。
最终解决⽅法:复制代码代码如下:<a onclick="javascript:Foo();return false;" href="#">不影响 GIF 的链接</a>如果不考虑GIF图⽚的问题,以上⽅法均可。
JavaScript中以构造函数的方式调用函数
1 2 3 4 5 6 7 8 9 10 11 12 13function Ninja() {this.skulk = function() {return this;};}var ninja1 = new Ninja();var ninja2 = new Ninja(); assert(ninja1.skulk() === ninja1, "The 1st ninja is skulking"); assert(ninja2.skulk() === ninja2, "The 2nd ninja is skulking");1 2 3 4 5 6 7 8 9 10 11 12 13function Ninja() {this.skulk = function() {return true;};return1}assert(Ninja() === 1,"Return value honored when not called as a constructor");var ninja = new Ninja();assert(typeof ninja === "object","Object returned when called as a constructor");assert(typeof ninja.skulk === "function","ninja object has a skulk method");JavaScript中以构造函数的⽅式调⽤函数构造器函数(Constructor functions)的定义和任何其它函数⼀样,我们可以使⽤函数声明、函数表达式或者函数构造器(见以前的随笔)等⽅式来构造函数对象。
函数构造器和其它函数的区别在与它们的调⽤⽅式不同。
C#代码与javaScript函数的相互调用
C#代码与javaScript函数的相互调⽤问:1.如何在JavaScript访问C#函数?2.如何在JavaScript访问C#变量?3.如何在C#中访问JavaScript的已有变量?4.如何在C#中访问JavaScript函数?问题1答案如下:javaScript函数中执⾏C#代码中的函数:⽅法⼀:1、⾸先建⽴⼀个按钮,在后台将调⽤或处理的内容写⼊button_click中;2、在前台写⼀个js函数,内容为document.getElementById("btn1").click();3、在前台或后台调⽤js函数,激发click事件,等于访问后台c#函数;⽅法⼆:1、函数声明为public后台代码(把public改成protected也可以)public string ss(){return("a");}2、在html⾥⽤<%=fucntion()%>可以调⽤前台脚本<script language=javascript>var a = "<%=ss()%>";alert(a);</script>⽅法三:1、<script language="javascript"><!--function __doPostBack(eventTarget, eventArgument){var theForm = document.Form1; //指runat=server的formtheForm.__EVENTTARGET.value = eventTarget;theFrom.__EVENTARGUMENT.value = eventArgument;theForm.submit();}--></script><input id="Button1" type="button" name="Button1" value="按钮" onclick="javascript:__doPostBack('Button1','')">⽅法四:<script language="javascript">function SubmitKeyClick(){if (event.keyCode == 13){event.cancelBubble = true;event.returnValue = false;document.all.FunName.value="你要调⽤的函数名";document.form[0].submit();}}</script><INPUT onkeypress="SubmitKeyClick()" id="aaa" type="text"><input type="hidden" name="FunName"> 〈!--⽤来存储你要调⽤的函数 --〉在.CS⾥有:public Page_OnLoad(){if (!Page.IsPost()){string strFunName=Request.Form["FunName"]!=null?Request.Form["FunName"]:"";//根据传回来的值决定调⽤哪个函数switch(strFunName){case "enter()":enter() ; //调⽤该函数break;case "其他"://调⽤其他函数break;default://调⽤默认函数break;}}}public void enter(){//……⽐如计算某值}问题2.如何在JavaScript访问C#变量?答案如下:⽅法⼀:1、通过页⾯上隐藏域访问<input id="xx" type="hidden" runat="server">⽅法⼆:1、如后台定义了PUBLIC STRING N;前台js中引⽤该变量的格式为'<%=n%>'或"+<%=n%>+"⽅法三:1、或者你可以在服务器端变量赋值后在页⾯注册⼀段脚本"<script language='javascript'>var temp=" + tmp + "</script>"tmp是后台变量,然后js中可以直接访问temp获得值。
页面加载时调用js函数方法
页⾯加载时调⽤js函数⽅法⽅法⼀:在html的body中加⼊onload=""事件<body onload='queryServer()'></body>⽅法⼆:jquery 中:$(function(){}) //⽅法体⾥⾯写调⽤⽅法<!-- 全局js --><script src="../js/jquery.min.js?v=2.1.4"></script><script type="text/javascript">var host = "http://127.0.0.1:8080"; $(function() { queryServer(); //待调⽤的函数 }); <!--获取服务名称-->function queryServer() {$.ajax({type: "POST",url: host+"/tools/get-sys-app-key",dataType: "json",data: datastr,success: function (result) {var opt = "";var length = result.length;for ( i = 0; i < length; i++) {var serverName = result[i]['appName']; //获取服务名称var serverAppId = result[i]['appId'];//获取服务idopt = opt + "<option value=\"" + serverAppId + "\">" + serverName+"("+serverAppId+")"+ "</option>";}$("#selectServer").html("<option value=\"0\">请选择服务名称</option>"+opt);},error: function (jqXHR) {console.log("error:" + jqXHR.status)}});}</script>⽅法三:jquery 中:使⽤$().ready()$().ready(function(){queryServer();}); 总结:⽅法⼆和⽅法三都是⼀个意思,两种不同的写法⽽已。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
本文由我司收集整编,推荐下载,如有疑问,请与我司联系
在COM 组件中调用JavaScript 函数
2013/08/13 127 转载自:blog.csdn/cheungmine/article/details/1451489
要求是很简单的,即有COM 组件A 在IE 中运行,使用JavaScript(JS)调用A
的方法longCalc(),该方法是一个耗时的操作,要求通知IE 当前的进度。
这就要求
使用回调函数,设其名称为scriptCallbackFunc。
实现这个技术很简单:
1 、组件方(C++)组件A 的方法在IDL 中定义:
[id(2)]HRESULTlongCalc([in]DOUBLEv1,[in]DOUBLEv2,[in,optional]VARIANTscript Callback); //假设回调原型为:
//scriptCallbackFunc(LONGnCurrentProgress,LONGnTotalProgress,BSTRbstrProgressNa me); //此方法由JS 脚本来实现STDMETHODIMPCA::longCalc(DOUBLEv1,DOUBLEv2,VARIANTscriptCallback) { CComPtr IDispatch spCallback; if(scriptCallback.vt==VT_DISPATCH) spCallback=scriptCallback.pdispVal; //参数准备CComVariantvarResult; CComVariantavarParams[3]; avarParams[0]=“开始计算股票”;//bstrProgressName avarParams[0].vt=VT_BSTR; avarParams[1]=100;//nTotalProgress avarParams[1].vt=VT_I4; avarParams[2]=0;//nCurrentProgress avarParams[2].vt=VT_I4; DISPPARAMSparams={avarParams,NULL,3,0}; if(spCallback) spCallback- Invoke(0, IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_METHOD, ¶ms, varResult,NULL,NULL); BOOLbFinished=false; while(!bFinished) { //计算工作…Sleep(1000); v1=v1+v2; //回调客户if(spCallback) { avarParams[0]=“正在计算股票…”;avarParams[2]=0; spCallback- Invoke(0, IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_METHOD, ¶ms,varResult,NULL,NULL); }
if(…)bFinished=TRUE; }//whileOK! returnS_OK; } //符合回调原型:scriptCallbackFunc。