如何在网页中找到 JavaScript 来源?

How to I find JavaScript source in web page?

我想检查 JavaScript 函数的源代码 web page

在 Firefox Inspector 中,我点击了

我明白了:

<a href="/thread/7629335?start=75&amp;tstart=0" title="last" onclick="jspaginate.init('last', '6'); return false;" class="js-pagination-next j-paginate-last">last</a>

我想找到 jspaginate.init 的来源。我单击了“调试器”选项卡,但没有看到 jspaginate.init。来源应该在页面上的某个地方,不是吗?

我是 运行 Mac OS 10.10.5 中的 Firefox 48.0。我在督察里

如果单击控制台选项卡,您将看到加载了一堆 os js 文件。您可能会在其中之一中找到该功能。

Most 似乎被缩小了,如果不是全部,所以找到这个函数可能很困难。

它也可以在 <script> 标签中,但仍然可能不容易找到。

在firefox中打开需要的页面,按F12打开开发者工具。 在 "debugger" 选项卡中按 ctrl + shift + F(在文件中搜索)并搜索 "jspaginate"。它将向您显示包含该词的所有文件。

Firefox Developer Tools - Search

Firefox Developer Tools: search for files with the debugger (Video)


或者 Firefox 不再支持的 FireBug >57*

安装 firebug,激活它,同时激活脚本面板,然后查找 jspaginate 对象。在 js 文件中你会发现它:

var jspaginate = {
    data:{},
    loading: false,
    init: function(action, last){
        var view = this,
            target, current;
        if(this.loading !== true){
            view.loadingSequence();
            if(action === 'first'){
                target = 0;
                view.update(target, 0);
            }else if(action === 'prev'){
                current = parseInt(view.data.pageIndex)-1;
                target = (current)*view.data.range;
                view.update(target, current);
            }else if(action === 'next'){
                current = parseInt(view.data.pageIndex)+1;
                target = (current)*view.data.range;
                view.update(target, current);
            }else if(action === 'last'){
                current = parseInt(last)-1;
                target = (current)*view.data.range;
                view.update(target, current);
            }
        }
    },
    update: function(target, current){
        this.data.pageIndex = current;
        this.pushState(target, current);
        this.getData(target);
    },
    pushState: function(target, current){
        var state = { 'page_id': current, 'user_id': 2 },
            title = 'Page'+ current,
            url = '?start='+target+'&tstart=0';
        history.pushState(state, title, url);
    },
    loadingSequence: function(){
        this.loading = true;
        $j('.j-pagination').append('<div class="j-loading-big"><span></span></div>');
        $j('.all-replies-container').css('opacity','.5');
    },
    removeLoading: function(){
        $j('.j-loading-big').remove();
        $j('.all-replies-container').css('opacity','1');
        this.loading = false;
    },
    updateUI: function(data){
        $j('.all-replies-container').html(data);
        $j('html, body').animate({
            scrollTop: ($j(".all-replies-container").offset().top -180)
        }, 800);

        this.removeLoading();
    },
    getData: function(target){
        var view = this,
            tId = (this.data.threadId).split('/')[2],
            urlString = jive.app.url({path:'/inline-thread.jspa?thread='+tId+'&start='+target+'&tstart=0'});
        $j.ajax({
            url: urlString,
            cache: true,
            async: true,
            type:'POST',
            dataType : 'html'
        }).success(function(data) {
            view.updateUI(data);
        }).error(function(data) {
            console.log(data);
        });
    }
}
;

以下是找到 JavaScript 方法的步骤。

  1. 单击 Debugger 选项卡。
  2. Ctrl+Shift+F在文件中查找
  3. 输入方法名称并按Enter
  4. window 会说 "No results found"。
  5. 每次 Firefox 停止使用 CPU 并再次按 Enter

Firefox 57.0.4 似乎有问题。它没有任何迹象表明它正在做任何事情。最终,结果会出现。但是,每次按 Enter 都会显示那么多组结果。