【问题标题】:Headless Chrome - trigger callback from loaded webpageHeadless Chrome - 从加载的网页触发回调
【发布时间】:2017-06-04 11:34:55
【问题描述】:

有没有办法从加载的网页触发回调?我曾经在可以使用以下代码的地方使用 PhantomJS:

 if (typeof window.callPhantom === 'function') {
    window.callPhantom({ data: 'RenderPDF' });
 }

在 phantomjs 脚本中:

page.onCallback = function (data) {
   /* callback code */
};

【问题讨论】:

    标签: javascript phantomjs google-chrome-devtools headless-browser


    【解决方案1】:

    您可以使用Runtime domain 中的评估函数在浏览器上评估javascript。

    下面的示例评估一个函数,该函数返回一个承诺,该承诺将在调用window.callChrome 时得到解决。

    function callChrome() {
      return () => {
        return new Promise((resolve, reject) => {
          window.callChrome = resolve;
        });
      });
    }
    
    // runtime is located in the client object
    Runtime.evaluate({
      expression: `(${callChrome()})()`,
      awaitPromise: true,
    }).then((result) => {
      // what you've passed into the window.callChrome function.
    });
    

    被评估的表达式如下所示。

    (() => {
      return new Promise((resolve, reject) => {
        window.callChrome = resolve;
      });
    })()
    

    页面准备就绪后,您应该真正运行这段代码。理想情况下使用Page.loadEventFired 函数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-11-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-07
      • 1970-01-01
      • 2021-05-18
      相关资源
      最近更新 更多