請AI幫忙寫了一些功能,前面一值很順利,但是想要用表頭的標題來做switch,可是他一直顯示函數未定義,問AI問半天也解不開,麻煩高手協助幫忙,謝謝。
程式如下:
// 記錄腳本啟動
console.log("測試腳本啟動中...");
// 主函數,監聽命令並執行操作
chrome.commands.onCommand.addListener((command) => {
if (command === "open_tool") {
chrome.tabs.query({ active: true, currentWindow: true }, (tabs) => {
if (tabs.length > 0) {
chrome.scripting.executeScript({
target: { tabId: tabs[0].id },
func: executeBasedOnTitle, // 傳遞處理函數
});
}
});
}
});
// 根據標題選擇執行對應函數
function executeBasedOnTitle() {
console.log("測試腳本執行中...");
const elements = document.querySelectorAll("div.display-1"); // 選取所有標題元素
if (elements.length === 0) {
console.warn("未找到任何標題元素,請確認網頁結構。");
return;
}
const targetIndex = 0; // 修改為目標標題的索引
const titleElement = elements[targetIndex];
if (!titleElement) {
console.warn(`未找到索引為 ${targetIndex} 的標題元素,請確認網頁結構。`);
return;
}
const titleText = titleElement.textContent.trim(); // 獲取標題文字
console.log("當前報告標題:", titleText);
// 根據標題文字執行對應的函數
switch (titleText) {
case "吊籠檢查報告":
if (typeof execute吊籠檢查報告 === "function") {
execute吊籠檢查報告();
} else {
console.error("函數 execute吊籠檢查報告 未定義!");
}
break;
case "定期檢查報告":
if (typeof execute定期檢查報告 === "function") {
execute定期檢查報告();
} else {
console.error("函數 execute定期檢查報告 未定義!");
}
break;
case "固定式起重機定期檢查報告表":
if (typeof executeFixedCraneInspectionReport === "function") {
executeFixedCraneInspectionReport();
} else {
console.error("函數 executeFixedCraneInspectionReport 未定義!");
}
break;
case "移動式起重機定期檢查報告表":
if (typeof executeMobileCraneInspectionReport === "function") {
executeMobileCraneInspectionReport();
} else {
console.error("函數 executeMobileCraneInspectionReport 未定義!");
}
break;
default:
console.warn("未找到對應的程式,請確認報告標題內容:", titleText);
}
}
// 示例函數:吊籠檢查報告
function execute吊籠檢查報告() {
console.log("正在執行吊籠檢查報告的處理邏輯...");
// 添加您的邏輯
}
// 示例函數:定期檢查報告
function execute定期檢查報告() {
console.log("正在執行定期檢查報告的處理邏輯...");
// 添加您的邏輯
}
// 示例函數:固定式起重機定期檢查報告表
function executeFixedCraneInspectionReport() {
console.log("正在執行固定式起重機定期檢查報告表的處理邏輯...");
// 添加您的邏輯
}
// 示例函數:移動式起重機定期檢查報告表
function executeMobileCraneInspectionReport() {
console.log("正在執行移動式起重機定期檢查報告表的處理邏輯...");
// 添加您的邏輯
}
開人員工具的畫面如下:
要然全部塞在一起?
chrome.commands.onCommand.addListener((command) => {
if (command === "open_tool") {
chrome.tabs.query({ active: true, currentWindow: true }, (tabs) => {
if (tabs.length > 0) {
chrome.scripting.executeScript({
target: { tabId: tabs[0].id },
func: () => {
// === 在被注入的函數內,定義所有需要的函數 ===
function execute吊籠檢查報告() {
console.log("正在執行吊籠檢查報告的處理邏輯...");
}
function execute定期檢查報告() {
console.log("正在執行定期檢查報告的處理邏輯...");
}
function executeFixedCraneInspectionReport() {
console.log("正在執行固定式起重機定期檢查報告表的處理邏輯...");
}
function executeMobileCraneInspectionReport() {
console.log("正在執行移動式起重機定期檢查報告表的處理邏輯...");
}
// === 然後在同一個作用域裡執行你的主邏輯 ===
function executeBasedOnTitle() {
console.log("測試腳本執行中...");
const elements = document.querySelectorAll("div.display-1");
if (elements.length === 0) {
console.warn("未找到任何標題元素,請確認網頁結構。");
return;
}
const targetIndex = 0;
const titleElement = elements[targetIndex];
if (!titleElement) {
console.warn(`未找到索引為 ${targetIndex} 的標題元素...`);
return;
}
const titleText = titleElement.textContent.trim();
console.log("當前報告標題:", titleText);
switch (titleText) {
case "吊籠檢查報告":
execute吊籠檢查報告();
break;
case "定期檢查報告":
execute定期檢查報告();
break;
case "固定式起重機定期檢查報告表":
executeFixedCraneInspectionReport();
break;
case "移動式起重機定期檢查報告表":
executeMobileCraneInspectionReport();
break;
default:
console.warn("未找到對應的程式:", titleText);
}
}
// 執行
executeBasedOnTitle();
},
});
}
});
}
});