9b395f5cc3
E2E Headed Chrome / e2e-headed (macos-15) (push) Has been cancelled
E2E Headed Chrome / e2e-headed (ubuntu-latest) (push) Has been cancelled
E2E Headed Chrome / e2e-headed (windows-latest) (push) Has been cancelled
CI / build (macos-latest) (push) Has been cancelled
CI / build (ubuntu-latest) (push) Has been cancelled
CI / build (windows-latest) (push) Has been cancelled
CI / unit-test (push) Has been cancelled
CI / bun-test (push) Has been cancelled
CI / adapter-test (push) Has been cancelled
CI / smoke-test (macos-latest) (push) Has been cancelled
CI / smoke-test (ubuntu-latest) (push) Has been cancelled
Security Audit / audit (push) Has been cancelled
Build Chrome Extension / build (push) Has been cancelled
Trigger Website Rebuild (Docs Updated) / dispatch (push) Has been cancelled
26 lines
794 B
JavaScript
26 lines
794 B
JavaScript
/**
|
|
* 即刻适配器公共定义
|
|
*
|
|
* JikePost 接口和 getPostData 函数在 feed.ts / search.ts 中复用,
|
|
* 统一维护于此文件避免重复。
|
|
*/
|
|
/**
|
|
* 注入浏览器 evaluate 的 JS 函数字符串。
|
|
* 从 React fiber 树中向上最多走 10 层,找到含 id 字段的 props.data。
|
|
*/
|
|
export const getPostDataJs = `
|
|
function getPostData(element) {
|
|
for (const key of Object.keys(element)) {
|
|
if (key.startsWith('__reactFiber$') || key.startsWith('__reactInternalInstance$')) {
|
|
let fiber = element[key];
|
|
for (let i = 0; i < 10 && fiber; i++) {
|
|
const props = fiber.memoizedProps || fiber.pendingProps;
|
|
if (props && props.data && props.data.id) return props.data;
|
|
fiber = fiber.return;
|
|
}
|
|
}
|
|
}
|
|
return null;
|
|
}
|
|
`.trim();
|