socketref,再见!高德

https://github.com/adoggie

  C++博客 :: 首页 :: 联系 :: 聚合  :: 管理
  246 Posts :: 4 Stories :: 312 Comments :: 0 Trackbacks

常用链接

留言簿(54)

我参与的团队

搜索

  •  

最新评论

阅读排行榜

评论排行榜

开始抓yixun.com的商品信息,开始很开心,但一下子来了问题。

http请求回来的商品分类条目用<a href=>, 但这个href不能直接使用,因为页面加载之后会启动js程序(一般都是jquery)对页面element进行配置和处理,例如:设置风格、事件等等。 

yixun玩了个防页面过期的小技巧:
   >每个请求page在server都会产生一个有效期变量XY(具体算法不详),
   >如果获取商品<a>直接请求,server将返回失败,因为<a href>并未包含XY
   >page加载完成之后js代码设置<a>被点击时触发事件E,E将XY添加到<a href>内
   >然后可以正确请求了


易迅防止请求页面过期,在主页中设置了一下参数: 
<script type="text/javascript"> window.yPageId = '17384560'; window.yPageLevel = '2';</script>

在页面内容中显示
<a ytag="40037" href="http://searchex.yixun.com/705938t705942-1-/" target="_blank">路由器</a>
注意: 返回的html就是如此

但如果用户点击(左键或者右键)此 node对象时,js代码会动态插入一个YTAG的变量 

未点击:
<a ytag="40037" href="http://searchex.yixun.com/705938t705942-1-/" target="_blank">路由器</a>

点击:   
<a ytag="40037" href="http://searchex.yixun.com/705938t705942-1-/?YTAG=2.1738456040037" target="_blank">路由器</a>

变量生成方式在这个js中实现:

此js 使用了jquery,页面完成加载之后,将配置页面元素的onclick行为,如果点击了页面元素,将YTAG属性加入到商品<a href=""/>中去 
js代码凌乱可以使用:
进行格式化观察

js代码:

G.header.search = {
    init: function() {
        G.header.search.event();
        G.header.search.setInputStyle();
        G.header.search.autoComplete();
    },
G.header.search.init();
query: function() {
        var input = $("#q_show"),
        v = $.trim(input.val()),
        c = $("#cate_show").val(),
        ret = true,
        href = input.attr("_href");
        if (v === G.header._Q_SHOW_DEF_TEXT && href) {
            window.location.href = href;
            ret = false;
        } else if (v === "" || v === G.header._Q_SHOW_DEF_TEXT) {
            if (!|| (c && c == "")) {
                input.focus();
                ret = false;
            }
        }
        if ($('#q_show').parents("form").find('input[name="YTAG"]').length === 0) {
            var ytag = $('#q_show').parents("form").find('input[type="submit"]').attr("ytag");
            var YTAG = (window.yPageLevel || 0+ '.' + (window.yPageId || 0+ ytag;
            $('#q_show').parents("form").append($('<input type="hidden" name="YTAG" value="' + YTAG + '" />'));
        }
        return ret;
    }

程序定义了G.header.search对象,并进行初始化init() ,query()是用户点击查询时触发使用 
init()内部配置了query函数,用于鼠标点击时候生成YTAG属性
看代码就很简单了

YTAG生成方式就是 window.yPageLevel+'.'+window.yPageId + <a ytag="40037">
这样一个商品条目的href就获得了
posted on 2014-05-19 21:30 放屁阿狗 阅读(1667) 评论(0)  编辑 收藏 引用

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理