2011-06-15 53 views
0

我试图提取表单提交的事件处理程序。 对于一个网站,我得到这个非常奇怪的处理程序: 我的问题是这个处理程序做什么,更重要的是它是一些 JSLibrary的一部分。这个javascript事件处理程序是做什么的?

这里是一个网页的链接: http://www.nfl.com/fantasy/story/09000d5d817fb977/article/nfl.fantasy/story;s1=story;slot=top;url=story;nfl=ad;!category=;kw=;team=no;team=was;team=sd;team=nyg;team=ten;team=bal;conf=nfc;conf=afc;dvsn=ncs;dvsn=nce;dvsn=acw;dvsn=acs;dvsn=acn;plyr=matthew_ryan;plyr=anquan_boldin;plyr=derrick_mason;event=fantasy;tile=

这是处理程序运行时,你试穿,当您单击电子邮件按钮,在出现的右上角的电子邮件的形式。

function q(a) { 
    a = a || window.event; 
    var b = a.target || a.srcElement, c, d; 
    while (b && b.nodeName.toLowerCase() !== "a") { 
     b = b.parentNode; 
    } 
    if (b && b.nodeName.toLowerCase() === "a" && b.href) { 
     c = b.href.match(f); 
     if (c) { 
      var e = o(b.href); 
      twttr.events.hub ? (d = new p(l.generateId(), b), l.add(d), n(e, b), twttr.events.trigger("click", {target:b, region:"intent", type:"click", data:{}})) : m(e), a.returnValue = !1, a.preventDefault && a.preventDefault(); 
     } 
    } 

}

+0

谷歌搜索表明它与[Twitter的网络意图(http://dev.twitter.com/pages/intents-events) – 2011-06-15 02:50:47

回答

0

不,它使用的唯一库是Twitter的。剩下的就是相当直接的JavaScript,尽管变量和函数的名字被缩小了,所以很难阅读。

function q(a) { 
    // Get the event from the passed argument if it exists, 
    // otherwise use the current event in the window 
    a = a || window.event; 

    // Get the target or source of the event, initialize variables c and d 
    var b = a.target || a.srcElement, c, d; 

    // Keep moving to the parent node of the target until you reach an <a> node 
    while (b && b.nodeName.toLowerCase() !== "a") { 
     b = b.parentNode; 
    } 

    // Double-check that b is an <a> node, then that 
    // it has an href attribute, making it a link 
    if (b && b.nodeName.toLowerCase() === "a" && b.href) { 
     // f is unknown, but I assume here it matches the URL in the <a> tag 
     // against some regular expression to make sure it's valid 
     c = b.href.match(f); 
     if (c) { 
      // Extract the URL 
      var e = o(b.href); 

      // Send it on to Twitter if possible, otherwise just cancel 
      // the click event 
      twttr.events.hub ? (d = new p(l.generateId(), b), l.add(d), n(e, b), 
      twttr.events.trigger("click", {target:b, region:"intent", 
      type:"click", data:{}})) : 
      m(e), a.returnValue = !1, 
      a.preventDefault && a.preventDefault(); 
     } 
    } 
} 
+0

感谢您的回答 我实际上意味着,如果你能识别某些库代码的模式。澄清更多:你认为这段代码是一些JavaScript库中的一些代码来处理点击事件。我说这是因为它似乎是处理任何点击事件的通用代码,因为表单与这里发生的事情没有任何关系。 它也来自一个叫做widgets.js的文件 再次感谢 – Muath 2011-06-15 03:23:29

+0

是的,它来自Twitter API(与jQuery或YUI等框架相反)。如果找到有效的链接标签,它的目的就是将点击事件传递给Twitter,否则它不会执行任何操作,也不会干扰用户。它是页面的一部分,可以让你发布它,而不是其他任何内容。顺便说一下,它也不是表单提交的一部分。从代码的外观来看,它似乎只是用一堆点击事件乱丢页面,然后再测试它们是否与Twitter按钮相关。 – brymck 2011-06-15 03:39:50

相关问题