c执行js脚本
⑴ C#如何执行js脚本传递过来的function
微软的程序员已经给我们写了这样一个操作script的com接口,那就是MS SCRIPT CONTROL
顾名思义,他能执行脚本语言,呵呵,确实,他能做到。
通过添加引用MS SCRIPT CONTROL 的com接口
然后创建对象
MSScriptControl.ScriptControlClass scc = new MSScriptControl.ScriptControlClass();
设定scc.Language = "javascript";
scc.Eval("var w=10;var t=2; p=w/t;");最后他返回p的值;
⑵ C# .net中 如何调用js脚本文件
很简单,
比如你有个GetUserData()js函数,在asp.net内调用用
RegisterStarupScript("<script>GetUser();</script>")方法
后台使用
Page.RegisterStartupScript("aa","<script language=javascript>test();</script>");
的好处在于
编译器是把脚本写在生成html的body或form标签之内的,会出现这样的效果:
页面内容显示完毕 再运行脚本
===》区别于
Response.Write("<script language=javascript>test();</script>");
客户端会先运行脚本,后决定是否显示body内容
但是,如果aspx文件内没有runat=server的Form ,则Page.RegisterStartupScript方法没有任何影响,也即无效
⑶ VC++ 如何执行脚本
1. 导入库 ,该指令一般加在 stdafx.h 中
#import "msscript.ocx" no_namespace
2. 创建脚本对象//脚本引擎IScriptControlPtr m_pScript;
m_pScript.CreateInstance(__uuidof(ScriptControl));
m_pScript-Timeout = 1000 * nTimeout;//超时设置
m_pScript-PutAllowUI( VARIANT_FALSE );
m_pScript-PutLanguage( _bstr_t(_T("JScript")) );
3. 读取脚本文件
wstring js = read_file("c:/1.js");//read_file 函数此处略去
4. 增加代码并执行//增加代码m_pScript-AddCode( _bstr_t(js.c_str()));
//执行代码(1.js 中有 main 函数)
m_pScript-(_bstr_t(_T("main()")));
至于脚本和VC的交互,可以通过创建 com 组件来实现,在 vc 工程中,增加一个 com 组件,比如 IVREngine,然后添加方法,在执行脚本前,把该对象增加到脚本引擎中,代码如下://辅助对象CComPtr<IIVREnginepIVREngine;
pIVREngine.CoCreateInstance(__uuidof(IVREngine));
m_pScript-AddObject( _bstr_t("IVR"), pIVREngine, VARIANT_TRUE );
这时,在脚本(1.js)中,就可以直接调用 IIVREngine 提供的方法了,比如 IVR.PlayFile("c:/1.wav");注意已有相应的类CScriptObject
BOOL CScriptDemoApp::InitInstance(){// Initialize COM
⑷ 在C++中怎么调用一个js中的方法
例如一个test.js内容如下:
function main( input )
{
return input;
}
在C++中调用方法如下:
// vcJscript.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#import "C:/windows/system32/msscript.ocx" // msscript.ocx
using namespace MSScriptControl;
#include <fstream>
#include <string>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
HRESULT hr = CoInitialize(NULL);
IScriptControlPtr pScriptControl(__uuidof(ScriptControl));
pScriptControl->Language = "JavaScript";
//pScriptControl->AllowUI = TRUE;
fstream file;
file.open( "test.js" );
string strFileContent, strTemp;
char szTemp[1024]="";
do
{
file.read(szTemp, 1024);
strFileContent.append( szTemp );
memset( szTemp, 0, 1024 );
}
while ( !file.fail() );
file.close();
pScriptControl->AddCode(strFileContent.c_str());
VARIANT A = pScriptControl->Eval("main(4);");
int iRet = A.intVal;
return 0;
}
脚本控件有四种方法。其中之一是 Run(),运行子例程或函数。在调用此方法之前,指定的脚本语言、 设置 AllowUI,并将下面的脚本添加到脚本控件:
//---------------------- Begin ---------------------------
#include <stdio.h>
#import "C:/winnt/system32/msscript.ocx" // msscript.ocx
using namespace MSScriptControl;
int main(void)
{
HRESULT hr = CoInitialize(NULL);
IScriptControlPtr pScriptControl(__uuidof(ScriptControl));
// Create a VARIANT array of VARIANTs which hold BSTRs
LPSAFEARRAY psa;
SAFEARRAYBOUND rgsabound[] = { 3, 0 }; // 3 elements, 0-based
int i;
psa = SafeArrayCreate(VT_VARIANT, 1, rgsabound);
if (!psa)
{
return E_OUTOFMEMORY;
}
VARIANT vFlavors[3];
for (i = 0; i < 3; i++)
{
VariantInit(&vFlavors[i]);
V_VT(&vFlavors[i]) = VT_BSTR;
}
V_BSTR(&vFlavors[0]) = SysAllocString(OLESTR("Vanilla"));
V_BSTR(&vFlavors[1]) = SysAllocString(OLESTR("Chocolate"));
V_BSTR(&vFlavors[2]) = SysAllocString(OLESTR("Espresso Chip"));
long lZero = 0;
long lOne = 1;
long lTwo = 2;
// Put Elements to the SafeArray:
hr = SafeArrayPutElement(psa, &lZero,&vFlavors[0]);
hr = SafeArrayPutElement(psa, &lOne,&vFlavors[1]);
hr = SafeArrayPutElement(psa, &lTwo,&vFlavors[2]);
// Free Elements from the SafeArray:
for(i=0;i<3;i++)
{
SysFreeString(vFlavors[i].bstrVal);
}
// Set up Script control properties
pScriptControl->Language = "JScript";
pScriptControl->AllowUI = TRUE;
pScriptControl->AddCode(
"function MyStringFunction(Argu1,Argu2,Argu3)/
{ return /"hi there/" ;}" );
// Call MyStringFunction with the two args:
_variant_t outpar = pScriptControl->Run("MyStringFunction", &psa);
// Convert VARIANT to C string:
_bstr_t bstrReturn = (_bstr_t)outpar;
char *pResult = (char *)bstrReturn;
// Print the result out:
printf("func=%s/n",pResult);
// Clean up:
SafeArrayDestroy(psa);
CoUninitialize();
return(0);
}
⑸ 在JSP c:for 循环中 用JS脚本怎么获得循环中一个div的id
可以c:forEach中将生成的div id写到一个js的数组中,之后在页面用js访问这个数组即可
或者用生成的div的别的特征来选到这个div再获取他的id,比如class属性。可以让生成的div使用同已前缀或者后缀的来区分于其他div。
如果生成的div的id是可以在c:forEach中控制的,可以用例如myDiv_1,myDiv_2这样的来定义,然后在页面用JS按照约定直接getElementById("myDiv_" + i);获取到。
⑹ 如何在C++中调用javascript中的函数
v8 是google 的js 开源引擎, 想实现这种功能, 建议直接在你工程里面加v8吧, 然后直接用v8调这段 js代码,
⑺ JS脚本怎么运行
常见的执行js代码都是放入到HTML引入后,然后通过HTML文件来执行胡查看代码。显然这是比较麻烦的事情,如果电脑里面安装了node.js,可以使用node来直接使用node来运行想要运行的js文件。
<html>
<body>
<script language="javascript">
function Card(owner,rate)
{
this.Owner=owner;
this.Rate=rate;
}
var mycard = new Card("X","150");
document.write("name:"+mycard.Owner+"speed:"+mycard.Rate);
</script>
</body>
</html>
(7)c执行js脚本扩展阅读:
JavaScript语言中采用的是弱类型的变量类型,对使用的数据类型未做出严格的要求,是基于Java基本语句和控制的脚本语言,其设计简单紧凑。
脚本简单地说就是一条条的文字命令,这些文字命令是我们可以看到的(如可以用记事本打开查看、编辑),脚本程序在执行时,是由系统的一个解释器,将其一条条的翻译成机器可识别的指令,并按程序顺序执行。因为脚本在执行时多了一道翻译的过程,所以它比二进制程序执行效率要稍低一些。
⑻ c#怎么调用js脚本
有三种方法,请自行选用
开源项目 Javascript .NET
地址:http://javascriptdotnet.codeplex.com/它是Google Chrome V8引擎在.NET上的封装,功能完善,性能相对较高
使用Interop.MSScriptControl.dll 控件。
MSScriptControl.ScriptControlClasssc=newMSScriptControl.ScriptControlClass();
sc.Language="javascript";
objectobj=sc.Eval("1+2*(3+4)");
Console.WriteLine(obj);
利用Microsoft.JScript.Vsa
添加Microsoft.JScript、Microsoft.Vsa二个程序集的引用
如满意,请采纳,谢谢。