Headless Chrome - 从加载的网页触发回调
Headless Chrome - trigger callback from loaded webpage
有没有办法从加载的网页触发回调?我曾经在可能使用以下代码的地方使用 PhantomJS:
if (typeof window.callPhantom === 'function') {
window.callPhantom({ data: 'RenderPDF' });
}
并且在 phantomjs 脚本中:
page.onCallback = function (data) {
/* callback code */
};
您可以使用 Runtime domain 中的求值函数在浏览器上求值 javascript。
下面的示例评估了一个函数,该函数 returns 将在调用 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
函数。
有没有办法从加载的网页触发回调?我曾经在可能使用以下代码的地方使用 PhantomJS:
if (typeof window.callPhantom === 'function') {
window.callPhantom({ data: 'RenderPDF' });
}
并且在 phantomjs 脚本中:
page.onCallback = function (data) {
/* callback code */
};
您可以使用 Runtime domain 中的求值函数在浏览器上求值 javascript。
下面的示例评估了一个函数,该函数 returns 将在调用 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
函数。