1 var webdeveloper_editHTMLIntervalId
= null;
2 var webdeveloper_editHTMLOldHTML
= null;
3 var webdeveloper_editHTMLSelectedTab
= 0;
4 var webdeveloper_editHTMLUpdateFrequency
= 500;
7 function webdeveloper_applyHTML()
9 var contentBody
= webdeveloper_getDocumentBodyElement(webdeveloper_getContentDocument());
10 var newHTML
= document
.getElementById("webdeveloper-edit-html-text-box").value
;
12 // If the content body is set and the new HTML is not the same as the old HTML
13 if(contentBody
&& newHTML
!= webdeveloper_editHTMLOldHTML
)
15 contentBody
.innerHTML
= newHTML
;
16 webdeveloper_editHTMLOldHTML
= newHTML
;
21 function webdeveloper_clearHTML()
23 document
.getElementById("webdeveloper-edit-html-text-box").value
= "";
26 // Reinitializes the dashboard when the page changes
27 function webdeveloper_editHTMLContentPageLoad(event
)
29 var eventTarget
= event
.target
;
31 // Try to get the original target
34 var originalTarget
= event
.originalTarget
;
36 // If the page is the target and the URI matches
37 if(originalTarget
&& eventTarget
&& eventTarget
.contentDocument
&& eventTarget
.hasAttribute
&& eventTarget
.hasAttribute("id") && eventTarget
.getAttribute("id").toLowerCase() == "content" && originalTarget
.documentURI
== eventTarget
.contentDocument
.documentURI
)
39 // If the page is generated
40 if(originalTarget
.documentURI
== "about:blank")
42 window
.clearInterval(webdeveloper_editHTMLIntervalId
);
43 window
.setTimeout(webdeveloper_retrieveHTML
, 1000);
44 window
.setTimeout(webdeveloper_updateHTML
, 1000);
48 webdeveloper_retrieveHTML();
58 // Handles a browser tab being selected
59 function webdeveloper_editHTMLMainTabSelect(event
)
61 var browser
= window
.top
.getBrowser();
62 var selectedTab
= browser
.mTabBox
.selectedIndex
;
64 // If the selected tab is different
65 if(selectedTab
!= webdeveloper_editHTMLSelectedTab
)
67 browser
.browsers
[webdeveloper_editHTMLSelectedTab
].contentDocument
.location
.reload(false);
69 webdeveloper_editHTMLSelectedTab
= selectedTab
;
71 webdeveloper_retrieveHTML();
75 // Initializes the edit HTML dashboard
76 function webdeveloper_initializeEditHTML()
78 var mainTabBox
= window
.top
.getBrowser().mTabBox
;
79 var textBox
= document
.getElementById("webdeveloper-edit-html-text-box");
80 var textBoxStyle
= "";
82 webdeveloper_editHTMLSelectedTab
= mainTabBox
.selectedIndex
;
83 webdeveloper_editHTMLUpdateFrequency
= webdeveloper_getIntegerPreference("webdeveloper.edit.update.frequency", true);
85 document
.getElementById("webdeveloper-search-dashboard-text").addEventListener("keypress", webdeveloper_searchTextKeyPress
, false);
86 mainTabBox
.addEventListener("select", webdeveloper_editHTMLMainTabSelect
, false);
87 window
.top
.addEventListener("load", webdeveloper_editHTMLContentPageLoad
, true);
89 // If the edit CSS background color preference is set
90 if(webdeveloper_isPreferenceSet("webdeveloper.edit.color.background"))
92 textBoxStyle
+= "background-color: " + webdeveloper_getStringPreference("webdeveloper.edit.color.background", true) + " !important; ";
95 // If the edit CSS text color preference is set
96 if(webdeveloper_isPreferenceSet("webdeveloper.edit.color.text"))
98 textBoxStyle
+= "color: " + webdeveloper_getStringPreference("webdeveloper.edit.color.text", true) + " !important; ";
101 // If the edit CSS font preference is set
102 if(webdeveloper_isPreferenceSet("webdeveloper.edit.font.size"))
104 textBoxStyle
+= "font-size: " + webdeveloper_getIntegerPreference("webdeveloper.edit.font.size", true) + "px !important; ";
107 textBox
.setAttribute("style", textBoxStyle
.trim());
109 webdeveloper_retrieveHTML();
110 webdeveloper_updateHTML();
113 // Resets the edited HTML
114 function webdeveloper_resetHTML()
116 window
.top
.BrowserReload();
119 // Retrieves the HTML
120 function webdeveloper_retrieveHTML()
122 var contentBody
= webdeveloper_getDocumentBodyElement(webdeveloper_getContentDocument());
123 var textBox
= document
.getElementById("webdeveloper-edit-html-text-box");
125 // If the content body is set
128 textBox
.value
= contentBody
.innerHTML
;
131 webdeveloper_applyHTML();
135 function webdeveloper_saveHTML()
137 var contentDocument
= webdeveloper_getContentDocument();
138 var filePicker
= Components
.classes
["@mozilla.org/filepicker;1"].createInstance(Components
.interfaces
.nsIFilePicker
);
140 var stringBundle
= document
.getElementById("webdeveloper-string-bundle");
141 var url
= Components
.classes
["@mozilla.org/network/standard-url;1"].createInstance(Components
.interfaces
.nsIURL
);
143 url
.spec
= contentDocument
.documentURI
;
144 filePicker
.defaultExtension
= url
.fileExtension
;
145 filePicker
.defaultString
= url
.fileName
;
147 filePicker
.init(window
, stringBundle
.getString("webdeveloper_saveHTML"), filePicker
.modeSave
);
149 result
= filePicker
.show();
151 // If the user selected a file
152 if(result
== filePicker
.returnOK
|| result
== filePicker
.returnReplace
)
154 var file
= filePicker
.file
;
155 var webBrowserPersistInterface
= Components
.interfaces
.nsIWebBrowserPersist
;
156 var webBrowserPersist
= Components
.classes
["@mozilla.org/embedding/browser/nsWebBrowserPersist;1"].createInstance(webBrowserPersistInterface
);
158 webBrowserPersist
.persistFlags
= webBrowserPersistInterface
.PERSIST_FLAGS_AUTODETECT_APPLY_CONVERSION
| webBrowserPersistInterface
.PERSIST_FLAGS_FROM_CACHE
| webBrowserPersistInterface
.PERSIST_FLAGS_REPLACE_EXISTING_FILES
;
160 // If the file does not exist
163 file
.create(Components
.interfaces
.nsIFile
.NORMAL_FILE_TYPE
, 00644);
166 webBrowserPersist
.saveDocument(contentDocument
, file
, null, contentDocument
.contentType
, webBrowserPersistInterface
.ENCODE_FLAGS_ENCODE_BASIC_ENTITIES
, 0);
171 function webdeveloper_searchHTML()
173 var searchText
= document
.getElementById("webdeveloper-search-dashboard-text").value
;
175 // If the search text is set
178 document
.getElementById("webdeveloper-edit-html-text-box").focus();
180 // If the search failed to find a match
181 if(!window
.find(searchText
, false, false, true, false, false, false))
183 document
.getElementById("webdeveloper-edit-html-text-box").setSelectionRange(0, 0);
184 window
.find(searchText
, false, false, true, false, false, false);
189 // Searches the HTML when the enter key is pressed
190 function webdeveloper_searchTextKeyPress(event
)
192 var keyCode
= event
.keyCode
;
194 // If the key code is set and is 13
195 if(keyCode
&& keyCode
== 13)
197 webdeveloper_searchHTML();
202 function webdeveloper_unloadEditHTML()
204 var browser
= window
.top
.getBrowser();
205 var mainTabBox
= browser
.mTabBox
;
207 webdeveloper_editHTMLOldHTML
= null;
209 window
.clearInterval(webdeveloper_editHTMLIntervalId
);
211 // Try to remove the event listener
214 document
.getElementById("webdeveloper-search-dashboard-text").removeEventListener("keypress", webdeveloper_searchTextKeyPress
, false);
221 // Try to remove the event listener
224 mainTabBox
.removeEventListener("select", webdeveloper_editHTMLMainTabSelect
, false);
231 // Try to remove the event listener
234 window
.top
.removeEventListener("load", webdeveloper_editHTMLContentPageLoad
, true);
241 window
.top
.BrowserReload();
245 function webdeveloper_updateHTML()
247 // If the update frequency is greater than 0
248 if(webdeveloper_editHTMLUpdateFrequency
> 0)
250 webdeveloper_editHTMLIntervalId
= window
.setInterval(webdeveloper_applyHTML
, webdeveloper_editHTMLUpdateFrequency
);