问题描述
Typetype=Type.GetTypeFromProgID("ScriptControl");//获取脚本对象objectobj=Activator.CreateInstance(type);//Typetype.InvokeMember("Language",BindingFlags.SetProperty,null,obj,newobject[]{"JScript"});//设置语言类型stringresultStr="";try{type.InvokeMember("AddCode",BindingFlags.InvokeMethod,null,obj,newobject[]{"functionaa(){returndocument;}"});//添加JS代码strJs.Replace("window","this")resultStr=type.InvokeMember("Eval",BindingFlags.InvokeMethod,null,obj,newobject[]{"aa();"}).ToString();//执行JS}catch(TargetInvocationExceptiontargetEx){if(targetEx.InnerException!=null){throwtargetEx.InnerException;}}
提示document未定义,怎么获取document,又怎么添加到成员里
解决方案
解决方案二:
如果是网页,那浏览器会创建一个document对象你这里的document那个ScriptControl会帮你创建吗?否则它从哪来?
解决方案三:
引用1楼shingoscar的回复:
如果是网页,那浏览器会创建一个document对象你这里的document那个ScriptControl会帮你创建吗?否则它从哪来?
我也不知道从哪里来,这也正是我想知道的,我只是想让我的这些代码能正常运行
解决方案四:
楼主的这段代码是纯JS,没有网页,也就没有document,这种用法也是第一次见到.
解决方案五:
引用3楼tcmakebest的回复:
楼主的这段代码是纯JS,没有网页,也就没有document,这种用法也是第一次见到.
不奇怪,是正常的。研究下呀
解决方案六:
引用2楼atfeel的回复:
我也不知道从哪里来,这也正是我想知道的,我只是想让我的这些代码能正常运行
你那些代码毫无根据地编出来的。
解决方案七:
前台跟后台的代码可以直接在一分代码片段里面调用吗?应该是不可以的吧。一般在C#的后台代码中通过ClientScript.RegisterStartupScript来调用javascript的代码
解决方案八:
引用5楼sp1234的回复:
Quote: 引用2楼atfeel的回复:
我也不知道从哪里来,这也正是我想知道的,我只是想让我的这些代码能正常运行你那些代码毫无根据地编出来的。
你为何断言我是毫无根据地编出来的?C#模拟httpPost请求登录网站帐号的时候,某些网站是先对密码进行各种javascript加密。javascript里面用到window,和document对象,这些对象是WEB控件特有的。C#里模拟执行这些js加密函数时调用到window和document.,提示未定义、你想想,我还是毫无根据地编出来吗?好好想清楚再回答,谢谢
解决方案九:
求解答求解答