【问题标题】:Chrome Remote Debugging - Getting Page NotificationsChrome 远程调试 - 获取页面通知
【发布时间】:2014-06-24 02:48:32
【问题描述】:

我正在远程调试 Chrome,使用 --remote-debugging-port 开关并运行另一个我正在使用 Web 套接字进行调试的 Chrome 实例。这与我在网上看到的大多数使用 node.js 进行调试的示例有点不同。

我需要导航到一个页面,然后评估其中的一些代码。使用此代码,这两个操作都按预期工作,我在第二个 Chrome 实例的页面中运行:

var socket = new WebSocket(url);
function debug(action, data){
    var msg;
    switch (action) {
        case 'NAVIGATE':
            msg = {'id':1001, 'method':'Page.navigate', 'params':{'url':data.urlToNavigate}};
            break;
        case 'EVALUATE':
            msg = {'id':1002, 'method':'Runtime.evaluate', 'params':{'expression':data.jsCodeToEvaluate}};
            break;
    }
    socket.send(JSON.stringify(msg));
}

我遇到的问题是获取notifications。我只想在导航完成后评估代码(比如说,在文档加载之后)。我通过以下方式在套接字上获取消息,但据我了解,当导航命令已由调试页面启动/接收时,而不是在导航完成时接收到 Page.navigate 方法的返回消息。

socket.onmessage = function (event) {
    var data = JSON.parse(event.data);
    switch (data.id) {
        case 1001:
            //A navigation command to app page has been received but not yet navigated
            break;
    }
};

如何使用通知来创建流程,例如:导航 > 等待导航完成 > 评估一些代码?我无法收到任何通知。

【问题讨论】:

    标签: javascript google-chrome google-chrome-devtools remote-debugging


    【解决方案1】:

    问题是通知未启用。要启用通知:

    socket.send(JSON.stringify({'id':12345, 'method':'Page.enable'}));
    

    然后,以这种方式接收通知:

    socket.onmessage = function (event) {
        var data = JSON.parse(event.data);
        switch (data.method) {
            case 'Page.frameNavigated':
                console.log('Navigation completed');
                break;
            //....  
        }
    }
    

    运行时通知 (Runtime.enable)、网络通知等也是如此......

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-21
      • 2012-06-04
      • 1970-01-01
      • 2015-06-18
      • 1970-01-01
      • 2017-12-14
      • 2013-12-28
      • 2014-06-13
      相关资源
      最近更新 更多