http://www.sufeinet.com/plugin.php?id=keke_group

苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

分布式系统框架(V2.0) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程

HttpHelper爬虫框架(V2.7-含.netcore) HttpHelper官方出品,爬虫框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V2.0) 开源的爬虫类,支持多种模式和属性 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 6959|回复: 10

[其他] 执行网页的js,直接报错。

[复制链接]
发表于 2014-4-10 13:36:50 | 显示全部楼层 |阅读模式
[C#] 纯文本查看 复制代码
            CompilerParameters parameters = new CompilerParameters();
 
            parameters.GenerateInMemory = true;
 
            CompilerResults results = _provider.CompileAssemblyFromSource(parameters, sb.ToString());
 
            Assembly assembly = results.CompiledAssembly;
  
            _evaluateType = assembly.GetType("aa.JScript");



QQ图片20140410133456.jpg


参考页面:http://www.sufeinet.com/thread-1835-1-1.html





1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
发表于 2014-4-10 13:40:54 | 显示全部楼层
sb贴一下看看
 楼主| 发表于 2014-4-10 13:43:53 | 显示全部楼层
[C#] 纯文本查看 复制代码
            #region MyRegion
            StringBuilder sb = new StringBuilder();
            sb.Append("package aa{ public class JScript {");
            sb.Append("/**");
            sb.Append("* 加载页面异步相关信息");
            sb.Append("*/");
            sb.Append("function loadOrderExt() {");
		    sb.Append("var actionUrl = OrderAppConfig.AsyncDomain");
		    sb.Append("+ \"/obtainOrderExt.action\";");
		    sb.Append("var param = addFlowTypeParam();");
		    sb.Append("jQuery.ajax( {");
		    sb.Append("	type : \"POST\",");
		    sb.Append("	dataType : \"json\",");
		    sb.Append("	url : actionUrl,");
		    sb.Append("	data : param,");
		    sb.Append("	cache : false,");
		    sb.Append("	success : function(dataResult, textStatus) {");
		    sb.Append("		// 没有登录跳登录");
		    sb.Append("	if (isUserNotLogin(dataResult)) {");
		    sb.Append("		goToLogin();");
		    sb.Append("		return;");
		    sb.Append("	}");
		    sb.Append("	// 服务器返回异常处理,如果有消息div则放入,没有则弹出");
		    sb.Append("	if (isHasMessage(dataResult)) {");
		    sb.Append("		var message = getMessage(dataResult);");
		    sb.Append("		alert(message);");
		    sb.Append("	}");
		    sb.Append("	");
		    sb.Append("	//=================1.刷新商品库存状态==============");
		    sb.Append("	var states = dataResult.skuStockInfos;");
		    sb.Append("	// 成功后如果有divID直接放入div,没有则返回结果");
		    sb.Append("	loadSkuListStockData(states);");
		    sb.Append("	");
		    sb.Append("	//=================2.加载验证码==============");
		    sb.Append("	if(dataResult.showCheckCode){");
		    sb.Append("		refreshCheckCode(dataResult.encryptClientInfo);");
		    sb.Append("	}");
		    sb.Append("	//===============3.加载订单备注==============");
		    sb.Append("	if(dataResult.showOrderRemark){");
		    sb.Append("		showOrderRemark();");
		    sb.Append("	}");
		    sb.Append("	//===============4.是否需要支付密码==============");
		    sb.Append("	if (dataResult.needPayPwd) {");
		    sb.Append("		$(\"#paypasswordPanel\").show();");
		    sb.Append("	} else {");
		    sb.Append("		$(\"#paypasswordPanel\").hide();");
		    sb.Append("	} ");			
		    sb.Append("	//==================5.加载余额==================");
		    sb.Append("	if(dataResult.balance.success){");
		    sb.Append("		var useFlag = dataResult.balance.checked;");
		    sb.Append("		$(\"#selectOrderBalance\").attr(\"checked\",useFlag);");
		    sb.Append("		$(\"#canUsedBalanceId\").text(\"使用余额(账户当前余额:\" + dataResult.balance.leavyMoney.toFixed(2) + \"元)\");");
		    sb.Append("		if(dataResult.balance.leavyMoney > 0){");
		    sb.Append("			$(\"#showOrderBalance\").css(\"display\", \"block\");");
		    sb.Append("		}else{");
		    sb.Append("			$(\"#showOrderBalance\").css(\"display\", \"none\");");
		    sb.Append("		}");
		    sb.Append("		// 验证余额是否开启支付密码");
		    sb.Append("		if(dataResult.showOpenPayPwd){");
		    sb.Append("			cancelUsedBalance();");
		    sb.Append("		}");
		    sb.Append("	}");
		    sb.Append("	//京豆优惠购是否足额和京豆优惠购商品id");
		    sb.Append("	var showOpenPayPwd = dataResult.showOpenPayPwd;");
		    sb.Append("	var existsJdbeanPromotion = dataResult.existsJdbeanPromotion;");
		    sb.Append("	var checkJdbeanPromotion = dataResult.checkJdbeanPromotion;");
		    sb.Append("	// 成功后如果有divID直接放入div,没有则返回结果");
		    sb.Append("	checkShowOpenPwd(showOpenPayPwd,existsJdbeanPromotion,checkJdbeanPromotion);");			
		    sb.Append("},");
		    sb.Append("error : function(XMLHttpResponse) {");			
		    sb.Append("}");
            sb.Append("});");
            sb.Append("}	");
            sb.Append("}}");
            #endregion
 
            CompilerParameters parameters = new CompilerParameters();
 
            parameters.GenerateInMemory = true;
 
            CompilerResults results = _provider.CompileAssemblyFromSource(parameters, sb.ToString());
 
            Assembly assembly = results.CompiledAssembly;
  
            _evaluateType = assembly.GetType("aa.JScript");

 楼主| 发表于 2014-4-10 13:45:28 | 显示全部楼层
飞哥,我要的只是dataResult.encryptClientInfo。怎么弄到这个值。
[C#] 纯文本查看 复制代码
sb.Append(" //=================2.加载验证码==============");
sb.Append(" if(dataResult.showCheckCode){");
sb.Append("     refreshCheckCode(dataResult.encryptClientInfo);");
sb.Append(" }");
发表于 2014-4-10 13:47:27 | 显示全部楼层
 楼主| 发表于 2014-4-10 14:14:52 | 显示全部楼层
飞哥,单独执行js,跟页面有没有什么关系。我是菜鸟,请飞哥解惑一下。
发表于 2014-4-10 14:31:01 | 显示全部楼层
shellpro 发表于 2014-4-10 14:14
飞哥,单独执行js,跟页面有没有什么关系。我是菜鸟,请飞哥解惑一下。

你看清楚你的JS,你这个JS你直接话在一个JS文件里我想肯定都不能执行,C#又怎么可能会执行呢。语法不对,变量很多没有。先解决下你这基础问题,
OrderAppConfig.AsyncDomain这个那来的  goToLogin() isUserNotLogin  refreshCheckCode  loadSkuListStockData  dataResult.skuStockInfos太多了我就不一个一个的说了。先看看你JS文件直接运行能不能管用,
 楼主| 发表于 2014-4-10 14:35:09 | 显示全部楼层
QQ图片20140410143309.jpg


[C#] 纯文本查看 复制代码
         function getNextCheckCode() {
                var obj = document.getElementById("orderCheckCodeImg");
                var rid = Math.random().toString()+"_"+Math.random().toString(); 
                var checkCodeUrl="";
                var encryptClientInfo=$("#encryptClientInfo").val();

                var checkCodeUrl="http://captcha.jd.com/verify/image?acid="+rid+"&srcid=trackWeb&is="+encryptClientInfo;

                
                obj.src = checkCodeUrl;
                $("#checkcodeRid").val(rid);
                $('#checkcodeTxt').val("");

                return encryptClientInfo;
        }



用这种方式连document都未定义。
是不是要把京东的所有有关联到的js全部贴进去才可以呢?

发表于 2014-4-10 14:51:54 | 显示全部楼层
shellpro 发表于 2014-4-10 14:35
[mw_shl_code=csharp,true]         function getNextCheckCode() {
                var obj = doc ...

很明显语法都不对,具体需要那些JS你找找看吧。最少要先在Js文件能执行成功
发表于 2014-4-11 08:32:39 | 显示全部楼层
JS一般不能直接拿来就用,而是需要提炼、整理的。
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备18043678号-2)

GMT+8, 2024-11-24 03:33

© 2014-2021

快速回复 返回顶部 返回列表