עזרה בפיתוח תוסף לכרום
-
אני מנסה לבנות תוסף כרום שימלא בצורה אוטומטית ורנדומלית.
הייעוד של התוסף הוא סה"כ לעזור לקרובת משפחה שעובדת בתכנות ובמקום שבבדיקה היא תצטרך לכתוב שוב ושוב ולמלאות תאים [שם חברה, מייל, כתובת, טלפון ח.פ וכו' וכו'] בלחיצת כפתור הכל יתמלא.
זה לא אמור להיות עם נתונים אמיתיים אלא רק מילוי רנדומלי.יש לי את הקוד הבא:
// קבועים של הסוגים השונים של השדות const selectFields = ["select"]; const phoneFields = ["phone", "mobile", "tel"]; const emailFields = ["email"]; const nameFields = ["name", "fullname", "first_name", "last_name"]; const companyFields = ["company", "organization"]; // פונקציה למציאת כל השדות בדף function getFields() { return Array.from(document.querySelectorAll("input, select")); } // פונקציה שיוצרת ערך רנדומלי לפי סוג השדה function generateValueForFieldType(fieldType) { switch (fieldType) { case "text": return Math.random().toString(36).substring(2, 15); case "email": return Math.random().toString(36).substring(2, 15) + "@example.com"; case "phone": return Math.floor(Math.random() * 10000000000).toString(); case "name": const names = ["John", "Jane", "Bob", "Alice", "David", "Sarah"]; return names[Math.floor(Math.random() * names.length)]; case "company": const companies = ["Google", "Apple", "Microsoft", "Amazon"]; return companies[Math.floor(Math.random() * companies.length)]; default: return ""; } } // פונקציה שמילאת את הערך של השדה לפי סוג השדה function autofillFields() { const fields = getFields(); fields.forEach((field) => { const fieldName = field.getAttribute("name").toLowerCase(); const fieldType = field.getAttribute("type").toLowerCase(); const fieldTagName = field.tagName.toLowerCase(); if (selectFields.includes(fieldTagName)) { const options = field.querySelectorAll("option"); const randomOption = options[Math.floor(Math.random() * options.length)]; randomOption.selected = true; } else if (phoneFields.includes(fieldName) || fieldType === "tel") { field.value = generateValueForFieldType("phone"); } else if (emailFields.includes(fieldName)) { field.value = generateValueForFieldType("email"); } else if (nameFields.includes(fieldName)) { field.value = generateValueForFieldType("name"); } else if (companyFields.includes(fieldName)) { field.value = generateValueForFieldType("company"); } else { field.value = generateValueForFieldType("text"); } }); } // פונקציה שמפעילה את המילוי האוטומטי על כל השדות בדף כשהמשתמש לוחץ על כפתור המילוי האוטומטי function onAutofillButtonClick() { autofillFields(); } // י
והקובץ מיניפיסט:
{ "manifest_version": 3, "name": "0101", "version": "1.0", "description": "Automatically fills form fields with random data.", "permissions": [ "activeTab", "storage" ], "content_scripts": [ { "matches": [ "<all_urls>" ], "js": [ "0101.js" ] } ] }
אבל התוסף לא עושה שום פעולה. איפה הבעיה? במה טעיתי?