|
@@ -21,6 +21,9 @@ class ChatUI {
|
|
|
// 设置初始高度
|
|
|
this.input.style.height = "40px";
|
|
|
|
|
|
+ // 获取总结按钮
|
|
|
+ this.summarizeButton = document.querySelector(".summarize-button");
|
|
|
+
|
|
|
// 初始化其他组件
|
|
|
this.setupEventListeners();
|
|
|
this.init();
|
|
@@ -123,6 +126,13 @@ class ChatUI {
|
|
|
this.promptPanel.classList.remove("show");
|
|
|
}
|
|
|
});
|
|
|
+
|
|
|
+ // 添加总结按钮点击事件
|
|
|
+ if (this.summarizeButton) {
|
|
|
+ this.summarizeButton.addEventListener("click", () => {
|
|
|
+ this.handleSummarize();
|
|
|
+ });
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
async handleSend() {
|
|
@@ -594,14 +604,25 @@ class ChatUI {
|
|
|
this.setInputState(true);
|
|
|
this.loadingDiv = this.createLoadingMessage();
|
|
|
|
|
|
- // 获取页面分析结果
|
|
|
- const pageContext = window.pageAnalyzer.analyzePage();
|
|
|
+ // 通过postMessage请求页面分析结果
|
|
|
+ const pageInfo = await new Promise((resolve) => {
|
|
|
+ // 创建一次性消息监听器
|
|
|
+ const messageHandler = (event) => {
|
|
|
+ if (event.data.type === "PAGE_ANALYSIS_RESULT") {
|
|
|
+ window.removeEventListener("message", messageHandler);
|
|
|
+ resolve(event.data.pageInfo);
|
|
|
+ }
|
|
|
+ };
|
|
|
+
|
|
|
+ // 添加消息监听
|
|
|
+ window.addEventListener("message", messageHandler);
|
|
|
+
|
|
|
+ // 发送分析请求到父页面
|
|
|
+ window.parent.postMessage({ type: "ANALYZE_PAGE" }, "*");
|
|
|
+ });
|
|
|
|
|
|
// 构建提示词
|
|
|
- const prompt = `请总结当前页面的主要内容:
|
|
|
-标题:${pageContext.title}
|
|
|
-URL:${pageContext.url}
|
|
|
-主要内容:${pageContext.mainContent}`;
|
|
|
+ const prompt = this.aiService.getSummaryPrompt(pageInfo);
|
|
|
|
|
|
// 发送分析请求
|
|
|
const response = await this.aiService.sendMessage(prompt);
|
|
@@ -613,7 +634,7 @@ URL:${pageContext.url}
|
|
|
}
|
|
|
|
|
|
await this.addMessage(response, "assistant", true);
|
|
|
- this.setInputState(false); // 总结完成后自动聚焦输入框
|
|
|
+ this.setInputState(false);
|
|
|
} catch (error) {
|
|
|
console.error("Failed to summarize page:", error);
|
|
|
this.addMessage(
|
|
@@ -621,7 +642,7 @@ URL:${pageContext.url}
|
|
|
"assistant",
|
|
|
false
|
|
|
);
|
|
|
- this.setInputState(false); // 错误后也自动聚焦输入框
|
|
|
+ this.setInputState(false);
|
|
|
}
|
|
|
}
|
|
|
}
|