232 lines
6.1 KiB
Markdown
232 lines
6.1 KiB
Markdown
# Greasemonkey Troubleshooting Guide
|
|
|
|
## "Add Rule" Button Not Working
|
|
|
|
### Quick Fix
|
|
1. **Reload the extension**:
|
|
- Chrome: Go to `chrome://extensions/` and click the reload icon on Greasemonkey
|
|
- Firefox: Go to `about:debugging` and click reload
|
|
2. **Close and reopen the popup** by clicking the extension icon again
|
|
3. **Check the browser console**:
|
|
- Right-click on the popup window
|
|
- Select "Inspect" or "Inspect Element"
|
|
- Look at the Console tab for any error messages
|
|
|
|
### Common Causes
|
|
|
|
#### 1. Bootstrap Not Loaded
|
|
**Symptom:** Modal doesn't open, or console shows "bootstrap is not defined"
|
|
**Solution:**
|
|
- Ensure you have an internet connection (Bootstrap loads from CDN)
|
|
- If offline, the extension won't work properly without Bootstrap
|
|
- Check browser console for network errors
|
|
|
|
#### 2. Content Security Policy
|
|
**Symptom:** Console shows CSP violations
|
|
**Solution:** Extension should work in popup, but if issues persist:
|
|
- Try reloading the extension completely
|
|
- Close all popup windows and reopen
|
|
|
|
#### 3. Extension Not Properly Loaded
|
|
**Symptom:** Nothing happens when clicking buttons
|
|
**Solution:**
|
|
- Chrome:
|
|
1. Go to `chrome://extensions/`
|
|
2. Find Greasemonkey
|
|
3. Click the reload icon (circular arrow)
|
|
4. Try again
|
|
- Firefox:
|
|
1. Go to `about:debugging#/runtime/this-firefox`
|
|
2. Find Greasemonkey
|
|
3. Click "Reload"
|
|
4. Try again
|
|
|
|
### Debug Steps
|
|
|
|
1. **Open the popup inspector**:
|
|
- Right-click anywhere in the popup window
|
|
- Select "Inspect" or "Inspect Element"
|
|
- This opens DevTools for the popup
|
|
|
|
2. **Check the Console tab** for errors like:
|
|
- "bootstrap is not defined" → Bootstrap didn't load
|
|
- "Cannot read property 'show' of undefined" → Modal not initialized
|
|
- "Element not found" → HTML structure issue
|
|
|
|
3. **Try in Console**:
|
|
```javascript
|
|
// Check if Bootstrap loaded
|
|
console.log(typeof bootstrap); // Should show "object"
|
|
|
|
// Check if elements exist
|
|
console.log(document.getElementById('addRuleBtn')); // Should show button element
|
|
console.log(document.getElementById('ruleModal')); // Should show modal element
|
|
```
|
|
|
|
4. **Manual test**:
|
|
```javascript
|
|
// Try to open modal manually
|
|
const modal = new bootstrap.Modal(document.getElementById('ruleModal'));
|
|
modal.show();
|
|
```
|
|
|
|
### Testing After Fix
|
|
|
|
1. Reload the extension
|
|
2. Click the Greasemonkey icon
|
|
3. Click "+ Add Rule"
|
|
4. Modal should open with the rule form
|
|
5. If successful, you should see the modal with:
|
|
- Rule Name field
|
|
- Match Type dropdown
|
|
- URL Pattern field (visible by default)
|
|
- JavaScript code area
|
|
- CSS code area
|
|
- Enabled checkbox
|
|
- Cancel and Save buttons
|
|
|
|
## Rules Not Executing
|
|
|
|
### Check List
|
|
1. ✓ Is the rule enabled? (toggle switch should be on)
|
|
2. ✓ Does the URL pattern match the current page URL?
|
|
3. ✓ If using element selector, does the element exist on the page?
|
|
4. ✓ Did you reload the page after creating/editing the rule?
|
|
|
|
### Debug Process
|
|
1. Open the page where the rule should run
|
|
2. Open browser console (F12)
|
|
3. Look for messages like: `[Greasemonkey] Executing rule: YourRuleName`
|
|
4. Check for error messages
|
|
|
|
### Common Issues
|
|
|
|
#### Rule Never Executes
|
|
- **URL pattern too specific**: Try a shorter, more general pattern
|
|
- ❌ `https://www.example.com/page.html?id=123`
|
|
- ✅ `example.com`
|
|
- **Element doesn't exist yet**: Page might load the element dynamically
|
|
- **Rule is disabled**: Check the toggle switch
|
|
|
|
#### JavaScript Not Running
|
|
- Check console for syntax errors
|
|
- Test your code in the page console first:
|
|
```javascript
|
|
// Test in console before adding to rule
|
|
console.log('Test');
|
|
```
|
|
|
|
#### CSS Not Applying
|
|
- Use `!important` to override existing styles:
|
|
```css
|
|
body {
|
|
background: #000 !important;
|
|
}
|
|
```
|
|
- Check CSS syntax is valid
|
|
- Some sites have very specific CSS that overrides yours
|
|
|
|
## Storage Issues
|
|
|
|
### Rules Not Persisting
|
|
**Chrome:**
|
|
- Ensure sync is enabled: `chrome://settings/syncSetup`
|
|
- Storage might be full (rare)
|
|
|
|
**Firefox:**
|
|
- Temporary add-ons don't persist after restart
|
|
- Use signed version for persistence
|
|
|
|
### Can't Edit/Delete Rules
|
|
1. Check browser console for errors
|
|
2. Try exporting rules (copy from console):
|
|
```javascript
|
|
chrome.storage.sync.get(['rules'], (result) => {
|
|
console.log(JSON.stringify(result.rules, null, 2));
|
|
});
|
|
```
|
|
3. Reload extension
|
|
|
|
## Performance Issues
|
|
|
|
### Popup Slow to Open
|
|
- Too many rules? Try disabling some
|
|
- Check if Bootstrap CDN is slow (network issue)
|
|
|
|
### Page Loads Slowly
|
|
- Complex JavaScript in rules can slow down pages
|
|
- Try simplifying your rules
|
|
- Use CSS instead of JavaScript when possible
|
|
|
|
## Browser-Specific Issues
|
|
|
|
### Chrome/Edge
|
|
- **Service worker inactive**: Reload extension
|
|
- **CSP errors**: Some sites block injected scripts (rare)
|
|
|
|
### Firefox
|
|
- **Temporary add-on removed**: Expected after restart, reload it
|
|
- **Storage not syncing**: Sign the extension for production use
|
|
|
|
## Getting Help
|
|
|
|
1. **Check console** (F12) for error messages
|
|
2. **Test with simple rule** first:
|
|
- Name: Test
|
|
- Match Type: URL
|
|
- URL Pattern: (current page URL)
|
|
- JavaScript: `alert('It works!');`
|
|
3. **Reload extension** after any changes
|
|
4. **Try test-page.html** to verify extension works
|
|
|
|
## Manual Reset
|
|
|
|
If all else fails, reset the extension:
|
|
|
|
### Chrome
|
|
```javascript
|
|
// In popup inspector console
|
|
chrome.storage.sync.clear(() => {
|
|
console.log('Storage cleared');
|
|
location.reload();
|
|
});
|
|
```
|
|
|
|
### Firefox
|
|
```javascript
|
|
// In popup inspector console
|
|
browser.storage.sync.clear().then(() => {
|
|
console.log('Storage cleared');
|
|
location.reload();
|
|
});
|
|
```
|
|
|
|
## Still Not Working?
|
|
|
|
1. Check if you have the latest version
|
|
2. Try in a different browser
|
|
3. Verify extension permissions are granted
|
|
4. Look for browser console errors
|
|
5. Try with a simple test rule on test-page.html
|
|
|
|
## Version Check
|
|
|
|
Current version: 1.0.0
|
|
|
|
Make sure you have all these files:
|
|
- manifest.json
|
|
- background.js
|
|
- content.js
|
|
- popup.html
|
|
- popup.css
|
|
- popup.js
|
|
- icon files (16, 48, 128)
|
|
|
|
## Contact
|
|
|
|
If issues persist after following this guide, contact Andy Dixon with:
|
|
- Browser version
|
|
- Error messages from console
|
|
- Steps to reproduce
|
|
- Screenshot if possible
|