Skip to content

Commit 08a4b26

Browse files
committed
feat(ui-tars): cdp canvas targetcreated
1 parent d7a5313 commit 08a4b26

File tree

1 file changed

+23
-6
lines changed

1 file changed

+23
-6
lines changed

apps/ui-tars/src/renderer/src/pages/remote/preview.tsx

Lines changed: 23 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,7 @@ export const CDPBrowser: React.FC<CDPBrowserProps> = ({ url, onError }) => {
172172
defaultViewport: {
173173
width: 1280,
174174
height: 800,
175-
deviceScaleFactor: 1,
175+
deviceScaleFactor: 0,
176176
hasTouch: false,
177177
isLandscape: true,
178178
isMobile: false,
@@ -187,7 +187,7 @@ export const CDPBrowser: React.FC<CDPBrowserProps> = ({ url, onError }) => {
187187
await page.setViewport({
188188
width: 1280,
189189
height: 800,
190-
deviceScaleFactor: 1,
190+
deviceScaleFactor: 0,
191191
hasTouch: false,
192192
isLandscape: true,
193193
isMobile: false,
@@ -268,16 +268,33 @@ export const CDPBrowser: React.FC<CDPBrowserProps> = ({ url, onError }) => {
268268
});
269269
};
270270

271-
browser.on('targetchanged', async (target: any) => {
271+
// 修改:同时监听 targetchanged 和 targetcreated 事件
272+
const handleTarget = async (target: any) => {
272273
if (target.type() === 'page') {
273274
try {
274275
const newPage = await target.page();
275276
if (newPage && newPage !== pageRef.current) {
277+
if (clientRef.current) {
278+
// 确保清理旧的 screencast
279+
await clientRef.current
280+
.send('Page.stopScreencast')
281+
.catch(console.error);
282+
clientRef.current.off('Page.screencastFrame');
283+
}
276284
await setupPageScreencast(newPage);
277285
}
278-
} catch (error) {}
286+
} catch (error) {
287+
console.error('Failed to setup page screencast:', error);
288+
if (onError) {
289+
onError(error instanceof Error ? error.message : String(error));
290+
}
291+
}
279292
}
280-
});
293+
};
294+
295+
browser.on('targetchanged', handleTarget);
296+
browser.on('targetcreated', handleTarget);
297+
281298
const pages = await browser.pages();
282299
const page =
283300
pages.length > 0 ? pages[pages.length - 1] : await browser.newPage();
@@ -296,7 +313,7 @@ export const CDPBrowser: React.FC<CDPBrowserProps> = ({ url, onError }) => {
296313
await pageRef.current.setViewport({
297314
width: 1280,
298315
height: 800,
299-
deviceScaleFactor: 1,
316+
deviceScaleFactor: 0,
300317
hasTouch: false,
301318
isLandscape: true,
302319
isMobile: false,

0 commit comments

Comments
 (0)