是否可以从客户端发送数据(浏览器)来操纵木偶的?

问题描述 投票:1回答:2

我已经创建了一个服务器端通过phantomjs之前,这样的渲染。

客户端

// when all client ajax request and page render finished
window.callPhantom('page.done')

// when page not found
window.callPhantom('page.fail')

服务器端

page.onCallback = function(status) {
  // when page render finished
  if(status == 'page.done') {
    // start render
  }

  // when page not found
  else {
    // response 404 page not found
  }
}

我现在想从phantomjs到木偶戏铬变化。

我怎样才能给所有的客户端AJAX请求后,通过从客户端(浏览器)服务器(木偶戏)的数据完成(如phantomjs callPhantom)。

是否有可能做到这一点通过使用Chrome操纵木偶的?

phantomjs puppeteer google-chrome-headless
2个回答
1
投票

我不得不面临着同样的问题,因为你,这是我得到了解决:

您可以使用该功能page.exposeFunction

这将绑定一个函数到页面window,所以你可以评估客户端该功能做一些在Node侧。

还有的文档中的例子。

我希望这可以帮助你。


0
投票

使用page.evaluate(pageFunction, ...args)将数据传递到该页面。这个例子传递一个选择字符串进行评估的页面:

(async() => {
  const puppeteer = require('puppeteer')

  const browser = await puppeteer.launch()
  const page = await browser.newPage()

  page.on('console', msg => {
    for (let i = 0; i < msg.args().length; ++i)
      console.log(`${i}: ${msg.args()[i]}`);
  });

  await page.goto('https://google.com/')
  await page.evaluate(selector => {
    const el = document.querySelector(selector);
    console.log(el.src)
  }, 'img#hplogo');

  await browser.close()
})();
© www.soinside.com 2019 - 2024. All rights reserved.