代码之家  ›  专栏  ›  技术社区  ›  Alex C

逆向工程DOM、JavaScript事件和“发生了什么事”?

  •  7
  • Alex C  · 技术社区  · 15 年前

    我正试图弄清楚Google实时页面预览的javascript中发生了什么。

    why are not the links im adding to the dom with javascript clickable?(更多上下文)

    http://chesser.ca/2010/11/google visual image search hack marklet/ for the“latest demo”,

    如果你在谷歌上搜索,结果会通过实时搜索出现在页面上。然后,如果您将鼠标移到结果集中的一个放大镜上,会发生许多事情。

    1. 放大镜触发的鼠标悬停事件
    2. 这将调用(到目前为止)具有未知参数的未知函数
    3. 该函数对Google的图像结果查询服务器进行跨站点调用。
    4. 这些结果存储在google的vs class memory` google.vs.ha中。`

    我从Google的库中复制了代码,并通过一个非小型化程序运行它,这样它的可读性就稍微提高了一点。我还通过firebug在代码中安装了断点,这样我可以在加载页面前后检查dom&memory空间。

    我的最终目标是能够通过调用调用的同一个函数来复制代码中的 mousover->code>事件-但是-我一直在尝试找到正确的函数。(我确信它涉及到 google.vs.ga(a,b,c). 但是我只是还不太明白。

    我知道这几乎是有史以来最疯狂的痴迷——但我不知道。也许如果你也在星期天读Stack,你会明白的:)

    什么函数被称为“on hover”,它发出获取图像请求的命令?

    <编辑>: 到目前为止,有一些支持票,但是我想我会为任何想在Firebug中追赶的人添加更多的背景,您可以随时关注javascript中发生的事情。

    是谷歌“内存”的图片,您可以查看所有函数和调用以及变量的当前状态。

    您还可以通过在书签栏中放置链接来访问和调用这些变量。例如, javascript:alert(google.base_href) after a search will tell you're at…从那里开始,它变得更加令人兴奋。

    编辑数字2:

    非常感谢马特,他一次成功地破解了这个问题。)

    <a href=“javascript:
    (函数){
    var all_divs=document.getElementsByTagname('div');
    对于(i=0;i<all_divs.length;i++){
    if(all_divs[i].classname='vsc')。{
    google.vs.ea(all_divs[i]);
    }
    }
    })();“>测试所有vsc</a>
    < /代码> <在谷歌实时页面预览的javascript中。

    Why aren't the links I'm adding to the DOM with Javascript clickable?(更多上下文)

    http://chesser.ca/2010/11/google-visual-image-search-hack-marklet/对于“最新演示”

    如果你在谷歌上搜索,结果会通过实时搜索出现在页面上。然后,如果将鼠标移到结果集中的一个放大镜上,就会发生许多事情。

    1. 放大镜触发的鼠标悬停事件
    2. 这将调用(到目前为止)具有未知参数的未知函数
    3. 该函数对Google的图像结果查询服务器进行跨站点调用。
    4. 这些结果存储在google的vs class memory` google.vs.ha中。`

    我从Google的库中复制了代码,并通过一个非小型化程序运行它,这样它的可读性就稍微提高了一点。我还通过Firebug在代码中安装了断点,这样我就可以在加载页面前后检查dom&memory空间。

    我的最终目标是能够复制mousover通过调用调用同一个函数的代码中的事件-但是-我一直在尝试找到正确的函数。(我相信它涉及google.vs.Ga(a, b, c)但我还不太明白。

    我知道这几乎是有史以来最疯狂的痴迷——但我不知道。也许如果你也在星期天读Stack,你会明白的:)

    什么函数被称为“on hover”,它发出获取图像请求的命令?

    编辑: 到目前为止,有一些支持票,但是我想我会给任何想赶上Firebug的人添加更多的背景,你可以随时关注javascript中发生的事情。

    是一张谷歌“内存”的图片,你可以查看所有的函数和调用以及变量的当前状态。

    您还可以通过在书签栏中放置链接来访问和调用这些变量。例如javascript:alert(google.base_href)搜索后会告诉你你的网址…从那里开始变得更加令人兴奋。

    编辑编号2:

    非常感谢马特,他一次成功地破解了这个问题。)

     <a href="javascript:
         (function(){
             var all_divs = document.getElementsByTagName('div');
             for (i=0;i < all_divs.length; i++) {
                 if (all_divs[i].className == 'vsc') {
                     google.vs.ea(all_divs[i]);
                 }
             }
         })();">test all vsc</a>
    
    1 回复  |  直到 15 年前
        1
  •  4
  •   Matt    15 年前

    google.vs.P

    • google.vs.ha

    google.vs.ea

    document.addEventListener('mouseover', function (event) {
        if (/\bvsc\b/.test(event.target.className)) {
            console.log('preview!');
            google.vs.ea(event.target);
        }
    }, false);
    

    profiler

    overloaded functions