עזרה בפיתוח תוסף לכרום
-
אני מנסה לבנות תוסף כרום שימלא בצורה אוטומטית ורנדומלית.
הייעוד של התוסף הוא סה"כ לעזור לקרובת משפחה שעובדת בתכנות ובמקום שבבדיקה היא תצטרך לכתוב שוב ושוב ולמלאות תאים [שם חברה, מייל, כתובת, טלפון ח.פ וכו' וכו'] בלחיצת כפתור הכל יתמלא.
זה לא אמור להיות עם נתונים אמיתיים אלא רק מילוי רנדומלי.יש לי את הקוד הבא:
// קבועים של הסוגים השונים של השדות 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" ] } ] }אבל התוסף לא עושה שום פעולה. איפה הבעיה? במה טעיתי?
-
אני מנסה לבנות תוסף כרום שימלא בצורה אוטומטית ורנדומלית.
הייעוד של התוסף הוא סה"כ לעזור לקרובת משפחה שעובדת בתכנות ובמקום שבבדיקה היא תצטרך לכתוב שוב ושוב ולמלאות תאים [שם חברה, מייל, כתובת, טלפון ח.פ וכו' וכו'] בלחיצת כפתור הכל יתמלא.
זה לא אמור להיות עם נתונים אמיתיים אלא רק מילוי רנדומלי.יש לי את הקוד הבא:
// קבועים של הסוגים השונים של השדות 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" ] } ] }אבל התוסף לא עושה שום פעולה. איפה הבעיה? במה טעיתי?
-
@one1010 לא הבנתי מי אמור להפעיל את הפונקציה onAutofillButtonClick.
כל עוד היא לא מופעלת אכן לא יקרה כלום.
נ.ב. הקוד מאוד יפה. -
@dovid כתב בעזרה בפיתוח תוסף לכרום:
לא הבנתי מי אמור להפעיל את הפונקציה onAutofillButtonClick.
זה אמור להיות הפעלה ידנית של המשתמש ע"י לחיצה על התוסף. לא?!
-
@one1010 לא הבנתי מי אמור להפעיל את הפונקציה onAutofillButtonClick.
כל עוד היא לא מופעלת אכן לא יקרה כלום.
נ.ב. הקוד מאוד יפה. -
@dovid כתב בעזרה בפיתוח תוסף לכרום:
לא הבנתי מי אמור להפעיל את הפונקציה onAutofillButtonClick.
האמת היא שהסתבכתי עם זה קצת...
מה אני צריך לשנות בקוד כדי שהמילוי האוטומטי יופעל על ידי לחיצה על התוסף?
שלום! נראה שהשיחה הזו מעניינת אותך, אבל עדיין אין לך חשבון.
נמאס לכם לגלול בין אותם הפוסטים בכל ביקור? כשנרשמים לחשבון, תמיד תחזרו בדיוק למקום שבו הייתם קודם, ותוכלו לבחור לקבל התראות על תגובות חדשות (בין אם במייל, ובין אם בהתראת פוש). תוכלו גם לשמור סימניות ולפרגן ב-upvote לפוסטים כדי להביע הערכה לחברי קהילה אחרים.
בעזרת התרומה שלך, הפוסט הזה יכול להיות אפילו טוב יותר 💗
הרשמה התחברות