+++ /dev/null
-// Adds colors from the specified property of the element to the given list
-function webdeveloper_addColor(element, property, colorList)
-{
- // If the element, property and color list are set
- if(element && property && colorList)
- {
- var computedStyle = element.ownerDocument.defaultView.getComputedStyle(element, null);
- var color = computedStyle.getPropertyCSSValue(property);
-
- // If the color is set and it is a color
- if(color && color.primitiveType == CSSPrimitiveValue.CSS_RGBCOLOR)
- {
- color = color.getRGBColorValue();
-
- colorList.push("#" + webdeveloper_formatColor(color.red.getFloatValue(CSSPrimitiveValue.CSS_NUMBER)) + webdeveloper_formatColor(color.green.getFloatValue(CSSPrimitiveValue.CSS_NUMBER)) + webdeveloper_formatColor(color.blue.getFloatValue(CSSPrimitiveValue.CSS_NUMBER)));
- }
- }
-}
-
-// Displays all abbreviations
-function webdeveloper_displayAbbreviations(element)
-{
- webdeveloper_toggleStyleSheet(element, "chrome://webdeveloper/content/stylesheets/display_abbreviations.css", "webdeveloper-display-abbreviations");
- webdeveloper_toggleFeatureTooltipStyles(element, "webdeveloper-display-abbreviations-tooltips", "*:before");
-}
-
-// Displays all access keys
-function webdeveloper_displayAccessKeys(element)
-{
- var accessKeyElement = null;
- var accessKeyElementList = null;
- var accessKeyElementsLength = null;
- var display = element.getAttribute("checked");
- var documentList = webdeveloper_getDocuments(webdeveloper_getContentWindow());
- var documentLength = documentList.length;
- var pageDocument = null;
- var spanElement = null;
- var text = null;
-
- // Loop through the documents
- for(var i = 0; i < documentLength; i++)
- {
- pageDocument = documentList[i];
-
- // Need to do this to stop the feature running twice
- webdeveloper_removeAllElementsByXPath(pageDocument, "//span[@class='webdeveloper-display-access-keys']");
-
- // If displaying
- if(display)
- {
- accessKeyElementList = webdeveloper_evaluateXPath(pageDocument, "//*[@accesskey]");
- accessKeyElementsLength = accessKeyElementList.length;
-
- // Loop through all the access key elements
- for(var j = 0; j < accessKeyElementsLength; j++)
- {
- accessKeyElement = accessKeyElementList[j];
- spanElement = pageDocument.createElement("span");
- text = "Accesskey=" + accessKeyElement.getAttribute("accesskey");
-
- spanElement.setAttribute("class", "webdeveloper-display-access-keys");
- spanElement.setAttribute("title", text);
- spanElement.appendChild(pageDocument.createTextNode(text));
- accessKeyElement.parentNode.insertBefore(spanElement, accessKeyElement);
- }
- }
- }
-
- webdeveloper_toggleStyleSheet(element, "chrome://webdeveloper/content/stylesheets/imports/tooltips.css", "webdeveloper-display-access-keys");
- webdeveloper_toggleFeatureTooltipStyles(element, "webdeveloper-display-access-keys-tooltips", "span.webdeveloper-display-access-keys");
-}
-
-// Displays all anchors
-function webdeveloper_displayAnchors(element)
-{
- var anchorElement = null;
- var anchorElementList = null;
- var anchorElementsLength = null;
- var anchorText = null;
- var display = element.getAttribute("checked");
- var documentList = webdeveloper_getDocuments(webdeveloper_getContentWindow());
- var documentLength = documentList.length;
- var linkElement = null;
- var pageDocument = null;
- var spanElement = null;
-
- // Loop through the documents
- for(var i = 0; i < documentLength; i++)
- {
- pageDocument = documentList[i];
-
- // Need to do this to stop the feature running twice
- webdeveloper_removeAllElementsByXPath(pageDocument, "//span[@class='webdeveloper-display-anchors']");
-
- // If displaying
- if(display)
- {
- anchorElementList = webdeveloper_evaluateXPath(pageDocument, "//*[@id] | //a[@name]");
- anchorElementsLength = anchorElementList.length;
-
- // Loop through all the anchor elements
- for(var j = 0; j < anchorElementsLength; j++)
- {
- anchorElement = anchorElementList[j];
- linkElement = pageDocument.createElement("a");
- spanElement = pageDocument.createElement("span");
-
- // If the anchor element has an id attribute
- if(anchorElement.hasAttribute("id"))
- {
- anchorText = "#" + anchorElement.getAttribute("id");
- }
- else if(anchorElement.hasAttribute("name"))
- {
- anchorText = "#" + anchorElement.getAttribute("name");
- }
-
- linkElement.setAttribute("href", anchorText);
- linkElement.setAttribute("title", anchorText);
- linkElement.appendChild(pageDocument.createTextNode(anchorText));
-
- spanElement.setAttribute("class", "webdeveloper-display-anchors");
- spanElement.setAttribute("title", anchorText);
- spanElement.appendChild(linkElement);
-
-
- // Try to insert the anchor element
- try
- {
- anchorElement.parentNode.insertBefore(spanElement, anchorElement);
- }
- catch(exception)
- {
- // Do nothing
- }
- }
- }
- }
-
- webdeveloper_toggleStyleSheet(element, "chrome://webdeveloper/content/stylesheets/display_anchors.css", "webdeveloper-display-anchors");
- webdeveloper_toggleFeatureTooltipStyles(element, "webdeveloper-display-anchors-tooltips", "span.webdeveloper-display-anchors, span.webdeveloper-display-anchors a");
-}
-
-// Displays all block sizes
-function webdeveloper_displayBlockSize(element)
-{
- var blockSizeElement = null;
- var blockSizeElementList = null;
- var blockSizeElementsLength = null;
- var display = element.getAttribute("checked");
- var documentList = webdeveloper_getDocuments(webdeveloper_getContentWindow());
- var documentLength = documentList.length;
- var height = null;
- var left = null;
- var pageDocument = null;
- var spanElement = null;
- var text = null;
- var top = null;
- var width = null;
-
- // Loop through the documents
- for(var i = 0; i < documentLength; i++)
- {
- pageDocument = documentList[i];
-
- // Need to do this to stop the feature running twice
- webdeveloper_removeAllElementsByXPath(pageDocument, "//span[@class='webdeveloper-display-block-size']");
-
- // If displaying
- if(display)
- {
- blockSizeElementList = webdeveloper_evaluateXPath(pageDocument, "//div | //form | //table");
- blockSizeElementsLength = blockSizeElementList.length;
-
- // Loop through the block size elements
- for(var j = 0; j < blockSizeElementsLength; j++)
- {
- blockSizeElement = blockSizeElementList[j];
- height = blockSizeElement.offsetHeight;
- left = blockSizeElement.offsetLeft;
- spanElement = pageDocument.createElement("span");
- top = blockSizeElement.offsetTop;
- width = blockSizeElement.offsetWidth;
- text = webdeveloper_getElementDescription(blockSizeElement) + " " + width + "x" + height;
-
- spanElement.style.left = left + "px";
- spanElement.style.position = "absolute";
- spanElement.style.top = top + "px";
-
- spanElement.setAttribute("class", "webdeveloper-display-block-size");
- spanElement.setAttribute("title", text);
- spanElement.appendChild(pageDocument.createTextNode(text));
-
- webdeveloper_insertAsFirstChild(blockSizeElement, spanElement);
- }
- }
- }
-
- webdeveloper_toggleStyleSheet(element, "chrome://webdeveloper/content/stylesheets/display_block_size.css", "webdeveloper-display-block-size");
- webdeveloper_toggleFeatureTooltipStyles(element, "webdeveloper-display-block-size-tooltips", "span.webdeveloper-display-block-size");
-}
-
-// Displays the order of the divs on the page
-function webdeveloper_displayDivOrder(element)
-{
- var display = element.getAttribute("checked");
- var divElement = null;
- var divElementList = null;
- var divElementsLength = null;
- var documentList = webdeveloper_getDocuments(webdeveloper_getContentWindow());
- var documentLength = documentList.length;
- var pageDocument = null;
- var spanElement = null;
- var text = null;
-
- // Loop through the documents
- for(var i = 0; i < documentLength; i++)
- {
- pageDocument = documentList[i];
-
- // Need to do this to stop the feature running twice
- webdeveloper_removeAllElementsByXPath(pageDocument, "//span[@class='webdeveloper-display-div-order']");
-
- // If displaying
- if(display)
- {
- divElementList = pageDocument.getElementsByTagName("div");
- divElementsLength = divElementList.length;
-
- // Loop through the div elements
- for(var j = 0; j < divElementsLength; j++)
- {
- divElement = divElementList[j];
- spanElement = pageDocument.createElement("span");
- text = webdeveloper_getElementDescription(divElement) + " " + (j + 1);
-
- spanElement.setAttribute("class", "webdeveloper-display-div-order");
- spanElement.setAttribute("title", text);
- spanElement.appendChild(pageDocument.createTextNode(text));
-
- webdeveloper_insertAsFirstChild(divElement, spanElement);
- }
- }
- }
-
- webdeveloper_toggleStyleSheet(element, "chrome://webdeveloper/content/stylesheets/display_div_order.css", "webdeveloper-display-div-order");
- webdeveloper_toggleFeatureTooltipStyles(element, "webdeveloper-display-div-order-tooltips", "span.webdeveloper-display-div-order");
-}
-
-// Displays id and class details for the page
-function webdeveloper_displayIdClassDetails(element)
-{
- var display = element.getAttribute("checked");
- var documentList = webdeveloper_getDocuments(webdeveloper_getContentWindow());
- var documentLength = documentList.length;
- var idClassElement = null;
- var idClassElementList = null;
- var idClassElementsLength = null;
- var idClassElementText = null;
- var pageDocument = null;
- var spanElement = null;
-
- // Loop through the documents
- for(var i = 0; i < documentLength; i++)
- {
- pageDocument = documentList[i];
-
- // Need to do this to stop the feature running twice
- webdeveloper_removeAllElementsByXPath(pageDocument, "//span[@class='webdeveloper-display-id-class-details']");
-
- // If displaying
- if(display)
- {
- idClassElementList = webdeveloper_evaluateXPath(pageDocument, "//*[@class] | //*[@id]");
- idClassElementsLength = idClassElementList.length;
-
- // Loop through all the id class elements
- for(var j = 0; j < idClassElementsLength; j++)
- {
- idClassElement = idClassElementList[j];
-
- // If the id class element is a Web Developer element
- if((idClassElement.hasAttribute("class") && idClassElement.getAttribute("class").indexOf("webdeveloper-")) || (idClassElement.hasAttribute("id") && idClassElement.getAttribute("id").indexOf("webdeveloper-")))
- {
- idClassElementText = "";
- spanElement = pageDocument.createElement("span");
-
- // If the id class element has an id attribute
- if(idClassElement.hasAttribute("id"))
- {
- idClassElementText += " #" + idClassElement.getAttribute("id");
- }
-
- // If the id class element has a class attribute
- if(idClassElement.hasAttribute("class"))
- {
- idClassElementText += " ." + idClassElement.getAttribute("class");
- }
-
- spanElement.setAttribute("class", "webdeveloper-display-id-class-details");
- spanElement.setAttribute("title", idClassElementText);
- spanElement.appendChild(pageDocument.createTextNode(idClassElementText));
-
- // Try to insert the id class element
- try
- {
- idClassElement.parentNode.insertBefore(spanElement, idClassElement);
- }
- catch(exception)
- {
- // Do nothing
- }
- }
- }
- }
- }
-
- webdeveloper_toggleStyleSheet(element, "chrome://webdeveloper/content/stylesheets/imports/tooltips.css", "webdeveloper-display-id-class-details");
- webdeveloper_toggleFeatureTooltipStyles(element, "webdeveloper-display-id-class-details-tooltips", "span.webdeveloper-display-id-class-details");
-}
-
-// Displays all link details
-function webdeveloper_displayLinkDetails(element)
-{
- webdeveloper_toggleStyleSheet(element, "chrome://webdeveloper/content/stylesheets/display_link_details.css", "webdeveloper-display-link-details");
- webdeveloper_toggleFeatureTooltipStyles(element, "webdeveloper-display-link-details-tooltips", "*:before");
-}
-
-// Displays object information
-function webdeveloper_displayObjectInformation(element)
-{
- var checked = element.getAttribute("checked");
- var divElement = null;
- var documentList = webdeveloper_getDocuments(webdeveloper_getContentWindow());
- var documentLength = documentList.length;
- var objectAttributes = null;
- var objectElement = null;
- var objectElementList = null;
- var objectElementsLength = null;
- var pageDocument = null;
- var paramAttributes = null;
- var paramElement = null;
- var paramElementList = null;
- var paramElementsLength = null;
- var pElement = null;
- var treeWalker = null;
-
- // Loop through the documents
- for(var i = 0; i < documentLength; i++)
- {
- pageDocument = documentList[i];
-
- // Need to do this to stop the feature running twice
- webdeveloper_removeAllElementsByXPath(pageDocument, "//div[@class='webdeveloper-display-object-information']");
-
- // If the element is checked
- if(checked)
- {
- objectElementList = pageDocument.getElementsByTagName("object");
- objectElementsLength = objectElementList.length;
-
- // Loop through all the object elements
- for(var j = 0; j < objectElementsLength; j++)
- {
- divElement = pageDocument.createElement("div");
- objectAttributes = "";
- objectElement = objectElementList[j];
- paramElementList = objectElement.getElementsByTagName("param");
- paramElementsLength = paramElementList.length;
- pElement = pageDocument.createElement("p");
-
- // If the object has an width attribute
- if(objectElement.hasAttribute("width"))
- {
- objectAttributes += ' width="' + objectElement.getAttribute("width") + '"';
- }
-
- // If the object has an height attribute
- if(objectElement.hasAttribute("height"))
- {
- objectAttributes += ' height="' + objectElement.getAttribute("height") + '"';
- }
-
- // If the object has an archive attribute
- if(objectElement.hasAttribute("archive"))
- {
- objectAttributes += ' archive="' + objectElement.getAttribute("archive") + '"';
- }
-
- // If the object has an classid attribute
- if(objectElement.hasAttribute("classid"))
- {
- objectAttributes += ' classid="' + objectElement.getAttribute("classid") + '"';
- }
-
- // If the object has an codebase attribute
- if(objectElement.hasAttribute("codebase"))
- {
- objectAttributes += ' codebase="' + objectElement.getAttribute("codebase") + '"';
- }
-
- // If the object has an codetype attribute
- if(objectElement.hasAttribute("codetype"))
- {
- objectAttributes += ' codetype="' + objectElement.getAttribute("codetype") + '"';
- }
-
- // If the object has an data attribute
- if(objectElement.hasAttribute("data"))
- {
- objectAttributes += ' data="' + objectElement.getAttribute("data") + '"';
- }
-
- // If the object has an standby attribute
- if(objectElement.hasAttribute("standby"))
- {
- objectAttributes += ' standby="' + objectElement.getAttribute("standby") + '"';
- }
-
- // If the object has an type attribute
- if(objectElement.hasAttribute("type"))
- {
- objectAttributes += ' type="' + objectElement.getAttribute("type") + '"';
- }
-
- pElement.appendChild(document.createTextNode("<object" + objectAttributes + ">"));
- divElement.appendChild(pElement);
-
- // Loop through all the param elements
- for(var k = 0; k < paramElementsLength; k++)
- {
- paramAttributes = "";
- paramElement = paramElementList[k];
- pElement = pageDocument.createElement("p");
-
- // If the param has a name attribute
- if(paramElement.hasAttribute("name"))
- {
- paramAttributes += ' name="' + paramElement.getAttribute("name") + '"';
- }
-
- // If the param has a value attribute
- if(paramElement.hasAttribute("value"))
- {
- paramAttributes += ' value="' + paramElement.getAttribute("value") + '"';
- }
-
- pElement.appendChild(document.createTextNode("<param" + paramAttributes + " />"));
- pElement.setAttribute("class", "param");
- divElement.appendChild(pElement);
- }
-
- pElement = pageDocument.createElement("p");
- pElement.appendChild(document.createTextNode("</object>"));
- divElement.appendChild(pElement);
-
- divElement.setAttribute("class", "webdeveloper-display-object-information");
- objectElement.parentNode.insertBefore(divElement, objectElement);
- }
- }
- }
-
- webdeveloper_toggleStyleSheet(element, "chrome://webdeveloper/content/stylesheets/display_object_information.css", "webdeveloper-display-object-information");
- webdeveloper_toggleFeatureTooltipStyles(element, "webdeveloper-display-object-information-tooltips", "div.webdeveloper-display-object-information");
-}
-
-// Displays the stack level of all elements on the page
-function webdeveloper_displayStackLevels(element)
-{
- var display = element.getAttribute("checked");
- var documentList = webdeveloper_getDocuments(webdeveloper_getContentWindow());
- var documentLength = documentList.length;
- var pageDocument = null;
- var pageElement = null;
- var spanElement = null;
- var text = null;
- var treeWalker = null;
-
- // Loop through the documents
- for(var i = 0; i < documentLength; i++)
- {
- pageDocument = documentList[i];
-
- // Need to do this to stop the feature running twice
- webdeveloper_removeAllElementsByXPath(pageDocument, "//span[@class='webdeveloper-display-stack-levels']");
-
- // If displaying
- if(display)
- {
- treeWalker = pageDocument.createTreeWalker(pageDocument, NodeFilter.SHOW_ELEMENT, webdeveloper_stackLevelFilter, false);
-
- // While the tree walker has more nodes
- while((pageElement = treeWalker.nextNode()) != null)
- {
- spanElement = pageDocument.createElement("span");
- text = webdeveloper_getElementDescription(pageElement) + " Z-index=" + pageElement.ownerDocument.defaultView.getComputedStyle(pageElement, null).getPropertyCSSValue("z-index").cssText;
-
- spanElement.setAttribute("class", "webdeveloper-display-stack-levels");
- spanElement.setAttribute("title", text);
- spanElement.appendChild(pageDocument.createTextNode(text));
-
- webdeveloper_insertAsFirstChild(pageElement, spanElement);
- }
- }
- }
-
- webdeveloper_toggleStyleSheet(element, "chrome://webdeveloper/content/stylesheets/imports/tooltips.css", "webdeveloper-display-stack-levels");
- webdeveloper_toggleFeatureTooltipStyles(element, "webdeveloper-display-stack-levels-tooltips", "span.webdeveloper-display-stack-levels");
-}
-
-// Displays all tab indices
-function webdeveloper_displayTabIndex(element)
-{
- var checked = element.getAttribute("checked");
- var documentList = webdeveloper_getDocuments(webdeveloper_getContentWindow());
- var documentLength = documentList.length;
- var pageDocument = null;
- var spanElement = null;
- var tabIndexElement = null;
- var tabIndexElementList = null;
- var tabIndexElementsLength = null;
- var text = null;
-
- // Loop through the documents
- for(var i = 0; i < documentLength; i++)
- {
- pageDocument = documentList[i];
-
- // Need to do this to stop the feature running twice
- webdeveloper_removeAllElementsByXPath(pageDocument, "//span[@class='webdeveloper-display-tab-index']");
-
- // If the element is checked
- if(checked)
- {
- tabIndexElementList = webdeveloper_evaluateXPath(pageDocument, "//*[@tabindex]");
- tabIndexElementsLength = tabIndexElementList.length;
-
- // Loop through all the tab index elements
- for(var j = 0; j < tabIndexElementsLength; j++)
- {
- spanElement = pageDocument.createElement("span");
- tabIndexElement = tabIndexElementList[j];
- text = "Tabindex=" + tabIndexElement.getAttribute("tabindex");
-
- spanElement.setAttribute("class", "webdeveloper-display-tab-index");
- spanElement.setAttribute("title", text);
- spanElement.appendChild(document.createTextNode(text));
- tabIndexElement.parentNode.insertBefore(spanElement, tabIndexElement);
- }
- }
- }
-
- webdeveloper_toggleStyleSheet(element, "chrome://webdeveloper/content/stylesheets/imports/tooltips.css", "webdeveloper-display-tab-index");
- webdeveloper_toggleFeatureTooltipStyles(element, "webdeveloper-display-tab-index-tooltips", "span.webdeveloper-display-tab-index");
-}
-
-// Displays the depth of all tables
-function webdeveloper_displayTableDepth(element)
-{
- var checked = element.getAttribute("checked");
- var documentList = webdeveloper_getDocuments(webdeveloper_getContentWindow());
- var documentLength = documentList.length;
- var pageDocument = null;
- var spanElement = null;
- var stringBundle = document.getElementById("webdeveloper-string-bundle");
- var tableElement = null;
- var tableElementList = null;
- var tableElementsLength = null;
- var text = null;
-
- // Loop through the documents
- for(var i = 0; i < documentLength; i++)
- {
- pageDocument = documentList[i];
-
- // Need to do this to stop the feature running twice
- webdeveloper_removeAllElementsByXPath(pageDocument, "//span[@class='webdeveloper-display-table-depth']");
-
- // If the element is checked
- if(checked)
- {
- tableElementList = pageDocument.getElementsByTagName("table");
- tableElementsLength = tableElementList.length;
-
- // Loop through all the table elements
- for(var j = 0; j < tableElementsLength; j++)
- {
- spanElement = pageDocument.createElement("span");
- tableElement = tableElementList[j];
- text = stringBundle.getString("webdeveloper_depth") + "=" + webdeveloper_getTableDepth(tableElement);
-
- spanElement.setAttribute("class", "webdeveloper-display-table-depth");
- spanElement.setAttribute("title", text);
- spanElement.appendChild(document.createTextNode(text));
- tableElement.parentNode.insertBefore(spanElement, tableElement);
- }
- }
- }
-
- webdeveloper_toggleStyleSheet(element, "chrome://webdeveloper/content/stylesheets/imports/tooltips.css", "webdeveloper-display-table-depth");
- webdeveloper_toggleFeatureTooltipStyles(element, "webdeveloper-display-table-depth-tooltips", "span.webdeveloper-display-table-depth");
-}
-
-// Displays table information
-function webdeveloper_displayTableInformation(element)
-{
- var checked = element.getAttribute("checked");
- var divElement = null;
- var documentList = webdeveloper_getDocuments(webdeveloper_getContentWindow());
- var documentLength = documentList.length;
- var pageDocument = null;
- var tableCellElementList = null;
- var tableCellElementsLength = null;
- var tableElement = null;
- var tableElementList = null;
- var tableElementsLength = null;
-
- // Loop through the documents
- for(var i = 0; i < documentLength; i++)
- {
- pageDocument = documentList[i];
-
- // Need to do this to stop the feature running twice
- webdeveloper_removeAllElementsByXPath(pageDocument, "//div[@class='webdeveloper-display-table-information']");
-
- // If the element is checked
- if(checked)
- {
- tableElementList = pageDocument.getElementsByTagName("table");
- tableElementsLength = tableElementList.length;
-
- // Loop through all the table elements
- for(var j = 0; j < tableElementsLength; j++)
- {
- tableElement = tableElementList[j];
- tableCellElementList = tableElement.getElementsByTagName("th");
- tableCellElementsLength = tableCellElementList.length;
-
- // If the table has a summary attribute
- if(tableElement.hasAttribute("summary"))
- {
- divElement = pageDocument.createElement("div");
-
- divElement.setAttribute("class", "webdeveloper-display-table-information");
- divElement.appendChild(pageDocument.createTextNode("Summary=" + tableElement.getAttribute("summary")));
- tableElement.parentNode.insertBefore(divElement, tableElement);
- }
-
- // Loop through the cell elements
- for(var k = 0; k < tableCellElementsLength; k++)
- {
- webdeveloper_outputTableCellInformation(tableCellElementList[k], pageDocument);
- }
-
- tableCellElementList = tableElement.getElementsByTagName("td");
- tableCellElementsLength = tableCellElementList.length;
-
- // Loop through the cell elements
- for(k = 0; k < tableCellElementsLength; k++)
- {
- webdeveloper_outputTableCellInformation(tableCellElementList[k], pageDocument);
- }
- }
- }
- }
-
- webdeveloper_toggleStyleSheet(element, "chrome://webdeveloper/content/stylesheets/display_table_information.css", "webdeveloper-display-table-information");
- webdeveloper_toggleFeatureTooltipStyles(element, "webdeveloper-display-table-information-tooltips", "div.webdeveloper-display-table-information");
-}
-
-// Displays all title attributes
-function webdeveloper_displayTitleAttributes(element)
-{
- var checked = element.getAttribute("checked");
- var documentList = webdeveloper_getDocuments(webdeveloper_getContentWindow());
- var documentLength = documentList.length;
- var pageDocument = null;
- var spanElement = null;
- var text = null;
- var titleAttributeElement = null;
- var titleAttributeElementList = null;
- var titleAttributeElementsLength = null;
-
- // Loop through the documents
- for(var i = 0; i < documentLength; i++)
- {
- pageDocument = documentList[i];
-
- // Need to do this to stop the feature running twice
- webdeveloper_removeAllElementsByXPath(pageDocument, "//span[@class='webdeveloper-display-title-attributes']");
-
- // If the element is checked
- if(checked)
- {
- titleAttributeElementList = webdeveloper_evaluateXPath(pageDocument, "//*[@title]");
- titleAttributeElementsLength = titleAttributeElementList.length;
-
- // Loop through all the title attribute elements
- for(var j = 0; j < titleAttributeElementsLength; j++)
- {
- spanElement = pageDocument.createElement("span");
- titleAttributeElement = titleAttributeElementList[j];
- text = "Title=" + titleAttributeElement.getAttribute("title");
-
- spanElement.setAttribute("class", "webdeveloper-display-title-attributes");
- spanElement.setAttribute("title", text);
- spanElement.appendChild(pageDocument.createTextNode(text));
- titleAttributeElement.parentNode.insertBefore(spanElement, titleAttributeElement);
- }
- }
- }
-
- webdeveloper_toggleStyleSheet(element, "chrome://webdeveloper/content/stylesheets/imports/tooltips.css", "webdeveloper-display-title-attributes");
- webdeveloper_toggleFeatureTooltipStyles(element, "webdeveloper-display-title-attributes-tooltips", "span.webdeveloper-display-title-attributes");
-}
-
-// Displays the topographic information for all elements
-function webdeveloper_displayTopographicInformation(element)
-{
- webdeveloper_toggleStyleSheet(element, "chrome://webdeveloper/content/stylesheets/display_topographic_information.css", "webdeveloper-display-topographic-information");
-}
-
-// Formats a CSS color
-function webdeveloper_formatColor(color)
-{
- var formattedColor = color.toString(16);
-
- // If the formatted color is less than 2 characters long
- if(formattedColor.length < 2)
- {
- return "0" + formattedColor;
- }
- else
- {
- return formattedColor;
- }
-}
-
-// Returns the depth of the table
-function webdeveloper_getTableDepth(table)
-{
- var depth = 1;
-
- // If the table is set
- if(table)
- {
- var ancestorList = webdeveloper_getElementAncestors(table);
- var ancestorLength = ancestorList.length;
- var tagName = null;
-
- // Loop through the ancestors
- for(var i = 0; i < ancestorLength; i++)
- {
- tagName = ancestorList[i].tagName;
-
- // If the tag name is set and equals table
- if(tagName && tagName.toLowerCase() == "table")
- {
- depth++;
- }
- }
- }
-
- return depth;
-}
-
-// Returns the text from a table heading
-function webdeveloper_getTableHeadingText(headingNode, headingText)
-{
- // If the heading node is set
- if(headingNode)
- {
- var childNode = null;
- var childNodeList = headingNode.childNodes;
- var childNodeLength = childNodeList.length;
- var childNodeType = null;
-
- // Loop through the child nodes
- for(var i = 0; i < childNodeLength; i++)
- {
- childNode = childNodeList[i];
- childNodeType = childNode.nodeType;
-
- // If the child node type is an element and it does not have a webdeveloper-table-information class
- if(childNodeType == Node.ELEMENT_NODE && (!childNode.hasAttribute("class") || childNode.getAttribute("class") != "webdeveloper-table-information"))
- {
- headingText = webdeveloper_getTableHeadingText(childNode, headingText);
- }
- else if(childNodeType == Node.TEXT_NODE)
- {
- headingText += childNode.nodeValue + " ";
- }
- }
- }
-
- return headingText.trim();
-}
-
-// Outputs the information for a table cell
-function webdeveloper_outputTableCellInformation(tableCellElement, pageDocument)
-{
- // If the table cell element is set
- if(tableCellElement)
- {
- var divElement = null;
- var pElement = null;
- var stringBundle = document.getElementById("webdeveloper-string-bundle");
-
- // If the table cell has a headers attribute
- if(tableCellElement.hasAttribute("headers"))
- {
- var definitionElement = pageDocument.createElement("dd");
- var headerList = tableCellElement.getAttribute("headers").split(" ");
- var headersLength = headerList.length;
-
- // Loop through the headers
- for(var i = 0; i < headersLength; i++)
- {
- pElement = pageDocument.createElement("p");
- pElement.appendChild(pageDocument.createTextNode(webdeveloper_getTableHeadingText(pageDocument.getElementById(headerList[i]), "")));
- definitionElement.appendChild(pElement);
- }
-
- // If the definition element has child nodes
- if(definitionElement.childNodes.length > 0)
- {
- var listElement = pageDocument.createElement("dl");
- var termElement = pageDocument.createElement("dt");
-
- divElement = pageDocument.createElement("div");
-
- termElement.appendChild(pageDocument.createTextNode(stringBundle.getString("webdeveloper_headers")));
- listElement.appendChild(termElement);
- listElement.appendChild(definitionElement);
-
- divElement.setAttribute("class", "webdeveloper-table-information");
- divElement.appendChild(listElement);
- tableCellElement.appendChild(divElement);
- }
- }
-
- divElement = pageDocument.createElement("div");
-
- // If the table cell has a scope attribute
- if(tableCellElement.hasAttribute("scope"))
- {
- var scope = tableCellElement.getAttribute("scope");
-
- pElement = pageDocument.createElement("p");
-
- // If the scope is col
- if(scope == "col")
- {
- pElement.appendChild(pageDocument.createTextNode(stringBundle.getString("webdeveloper_tableInformationHeadingColumn")));
- }
- else if(scope == "colgroup")
- {
- pElement.appendChild(pageDocument.createTextNode(stringBundle.getString("webdeveloper_tableInformationHeadingColumnGroup")));
- }
- else if(scope == "row")
- {
- pElement.appendChild(pageDocument.createTextNode(stringBundle.getString("webdeveloper_tableInformationHeadingRow")));
- }
- else if(scope == "rowgroup")
- {
- pElement.appendChild(pageDocument.createTextNode(stringBundle.getString("webdeveloper_tableInformationHeadingRowGroup")));
- }
-
- divElement.appendChild(pElement);
- }
-
- // If the table cell has an abbr attribute
- if(tableCellElement.hasAttribute("abbr"))
- {
- pElement = pageDocument.createElement("p");
- pElement.appendChild(pageDocument.createTextNode(stringBundle.getString("webdeveloper_abbreviation") + "=" + tableCellElement.getAttribute("abbr")));
- divElement.appendChild(pElement);
- }
-
- // If the table cell has an axis attribute
- if(tableCellElement.hasAttribute("axis"))
- {
- pElement = pageDocument.createElement("p");
- pElement.appendChild(pageDocument.createTextNode(stringBundle.getString("webdeveloper_axis") + "=" + tableCellElement.getAttribute("axis")));
- divElement.appendChild(pElement);
- }
-
- // If the div element has child nodes
- if(divElement.childNodes.length > 0)
- {
- divElement.setAttribute("class", "webdeveloper-table-information");
- tableCellElement.appendChild(divElement);
- }
- }
-}
-
-// Sets the image file sizes for a list of images
-function webdeveloper_setImageFileSizes(imageList)
-{
- var image = null;
- var imageListLength = imageList.length;
- var newImageList = new Array();
-
- // Loop through the images
- for(var i = 0; i < imageListLength; i++)
- {
- image = imageList[i];
- image.fileSize = webdeveloper_getFileSize(image.src);
-
- newImageList.push(image);
- }
-
- return newImageList;
-}
-
-// Sets the script file sizes for a list of scripts
-function webdeveloper_setScriptFileSizes(scriptList)
-{
- var script = null;
- var scriptListLength = scriptList.length;
- var newScriptList = new Array();
-
- // Loop through the images
- for(var i = 0; i < scriptListLength; i++)
- {
- script = scriptList[i];
- script.fileSize = webdeveloper_getFileSize(script.src);
- script.uncompressedFileSize = webdeveloper_getUncompressedFileSize(script.src);
-
- newScriptList.push(script);
- }
-
- return newScriptList;
-}
-
-// Sets the style sheet file sizes for a list of style sheets
-function webdeveloper_setStyleSheetFileSizes(styleSheetList)
-{
- var styleSheet = null;
- var styleSheetListLength = styleSheetList.length;
- var newStyleSheetList = new Array();
-
- // Loop through the style sheets
- for(var i = 0; i < styleSheetListLength; i++)
- {
- styleSheet = styleSheetList[i];
- styleSheet.fileSize = webdeveloper_getFileSize(styleSheet.href);
- styleSheet.uncompressedFileSize = webdeveloper_getUncompressedFileSize(styleSheet.href);
-
- newStyleSheetList.push(styleSheet);
- }
-
- return newStyleSheetList;
-}
-
-// Sorts two anchors
-function webdeveloper_sortAnchors(anchorOne, anchorTwo)
-{
- // If both anchors are set
- if(anchorOne && anchorTwo)
- {
- var anchorOneLink = null;
- var anchorTwoLink = null;
-
- // If the first anchor has an id attribute
- if(anchorOne.hasAttribute("id"))
- {
- anchorOneLink = anchorOne.getAttribute("id");
- }
- else if(anchorOne.hasAttribute("name"))
- {
- anchorOneLink = anchorOne.getAttribute("name");
- }
-
- // If the second anchor has an id attribute
- if(anchorTwo.hasAttribute("id"))
- {
- anchorTwoLink = anchorTwo.getAttribute("id");
- }
- else if(anchorTwo.hasAttribute("name"))
- {
- anchorTwoLink = anchorTwo.getAttribute("name");
- }
-
- // If the anchor links are equal
- if(anchorOneLink == anchorTwoLink)
- {
- return 0;
- }
- else if(anchorOneLink < anchorTwoLink)
- {
- return -1;
- }
- }
-
- return 1;
-}
-
-// Sorts two documents
-function webdeveloper_sortDocuments(documentOne, documentTwo)
-{
- // If both documents are set
- if(documentOne && documentTwo)
- {
- var documentOneURL = documentOne.documentURI;
- var documentTwoURL = documentTwo.documentURI;
-
- // If the documents are equal
- if(documentOneURL == documentTwoURL)
- {
- return 0;
- }
- else if(documentOneURL < documentTwoURL)
- {
- return -1;
- }
- }
-
- return 1;
-}
-
-// Sorts two documents by file size
-function webdeveloper_sortDocumentsByFileSize(documentOne, documentTwo)
-{
- // If both documents and their URLs are set
- if(documentOne && documentTwo && documentOne.documentURI && documentTwo.documentURI)
- {
- var documentOneFileSize = webdeveloper_getFileSize(documentOne.documentURI);
- var documentTwoFileSize = webdeveloper_getFileSize(documentTwo.documentURI);
-
- // If the document file sizes are equal
- if(documentOneFileSize == documentTwoFileSize)
- {
- return webdeveloper_sortDocuments(documentOne, documentTwo);
- }
- else if(documentOneFileSize > documentTwoFileSize)
- {
- return -1;
- }
- }
-
- return 1;
-}
-
-// Sorts two images by file size
-function webdeveloper_sortImagesByFileSize(imageOne, imageTwo)
-{
- // If both images and their file sizes are set
- if(imageOne && imageTwo && imageOne.fileSize && imageTwo.fileSize)
- {
- var imageOneFileSize = imageOne.fileSize;
- var imageTwoFileSize = imageTwo.fileSize;
-
- // If the image file sizes are equal
- if(imageOneFileSize == imageTwoFileSize)
- {
- return webdeveloper_sortImages(imageOne, imageTwo);
- }
- else if(imageOneFileSize > imageTwoFileSize)
- {
- return -1;
- }
- }
-
- return 1;
-}
-
-// Sorts two links
-function webdeveloper_sortLinks(linkOne, linkTwo)
-{
- // If both links are set
- if(linkOne && linkTwo)
- {
- var linkOneHref = linkOne.href;
- var linkTwoHref = linkTwo.href;
-
- // If the links are equal
- if(linkOneHref == linkTwoHref)
- {
- return 0;
- }
- else if(linkOneHref < linkTwoHref)
- {
- return -1;
- }
- }
-
- return 1;
-}
-
-// Sorts two scripts
-function webdeveloper_sortScripts(scriptOne, scriptTwo)
-{
- // If both scripts and src are set
- if(scriptOne && scriptTwo && scriptOne.src && scriptTwo.src)
- {
- var scriptOneSrc = scriptOne.src;
- var scriptTwoSrc = scriptTwo.src;
-
- // If the scripts are equal
- if(scriptOneSrc == scriptTwoSrc)
- {
- return 0;
- }
- else if(scriptOneSrc < scriptTwoSrc)
- {
- return -1;
- }
- }
-
- return 1;
-}
-
-// Sorts two scripts by file size
-function webdeveloper_sortScriptsByFileSize(scriptOne, scriptTwo)
-{
- // If both scripts and src are set
- if(scriptOne && scriptTwo && scriptOne.src && scriptTwo.src)
- {
- var scriptOneFileSize = webdeveloper_getFileSize(scriptOne.src);
- var scriptTwoFileSize = webdeveloper_getFileSize(scriptTwo.src);
-
- // If the script file sizes are equal
- if(scriptOneFileSize == scriptTwoFileSize)
- {
- return webdeveloper_sortScripts(scriptOne, scriptTwo);
- }
- else if(scriptOneFileSize > scriptTwoFileSize)
- {
- return -1;
- }
- }
-
- return 1;
-}
-
-// Sorts two style sheets
-function webdeveloper_sortStyleSheets(styleSheetOne, styleSheetTwo)
-{
- // If both style sheets and href are set
- if(styleSheetOne && styleSheetTwo && styleSheetOne.href && styleSheetTwo.href)
- {
- var styleSheetOneSrc = styleSheetOne.href;
- var styleSheetTwoSrc = styleSheetTwo.href;
-
- // If the style sheets are equal
- if(styleSheetOneSrc == styleSheetTwoSrc)
- {
- return 0;
- }
- else if(styleSheetOneSrc < styleSheetTwoSrc)
- {
- return -1;
- }
- }
-
- return 1;
-}
-
-// Sorts two style sheets by file size
-function webdeveloper_sortStyleSheetsByFileSize(styleSheetOne, styleSheetTwo)
-{
- // If both style sheets and href are set
- if(styleSheetOne && styleSheetTwo && styleSheetOne.href && styleSheetTwo.href)
- {
- var styleSheetOneFileSize = webdeveloper_getFileSize(styleSheetOne.href);
- var styleSheetTwoFileSize = webdeveloper_getFileSize(styleSheetTwo.href);
-
- // If the style sheet file sizes are equal
- if(styleSheetOneFileSize == styleSheetTwoFileSize)
- {
- return webdeveloper_sortStyleSheets(styleSheetOne, styleSheetTwo);
- }
- else if(styleSheetOneFileSize > styleSheetTwoFileSize)
- {
- return -1;
- }
- }
-
- return 1;
-}
-
-// Filter for stack level tree walker
-function webdeveloper_stackLevelFilter(node)
-{
- // If the node has a class attribute and it starts with webdeveloper
- if(node && (!node.hasAttribute("class") || node.getAttribute("class").indexOf("webdeveloper-") != 0))
- {
- var zIndex = node.ownerDocument.defaultView.getComputedStyle(node, null).getPropertyCSSValue("z-index").cssText;
-
- // If the node has a z-index and it is not set to auto
- if(zIndex && zIndex != "auto")
- {
- return NodeFilter.FILTER_ACCEPT;
- }
- }
-
- return NodeFilter.FILTER_SKIP;
-}
-
-// Tidies a list of anchors by removing duplicates and sorting
-function webdeveloper_tidyAnchors(anchorList)
-{
- var anchor = null;
- var anchorLink = null;
- var anchorListLength = anchorList.length;
- var newAnchorList = new Array();
- var newAnchorListLength = null;
- var nextAnchor = null;
- var nextAnchorLink = null;
- var tidiedAnchorList = new Array();
-
- // Loop through the anchors
- for(var i = 0; i < anchorListLength; i++)
- {
- newAnchorList.push(anchorList[i]);
- }
-
- newAnchorList.sort(webdeveloper_sortAnchors);
-
- newAnchorListLength = newAnchorList.length;
-
- // Loop through the anchors
- for(i = 0; i < newAnchorListLength; i++)
- {
- anchor = newAnchorList[i];
-
- // If the anchor has an id attribute
- if(anchor.hasAttribute("id"))
- {
- anchorLink = anchor.getAttribute("id");
- }
- else
- {
- anchorLink = anchor.getAttribute("name");
- }
-
- // If this is not the last anchor
- if(i + 1 < newAnchorListLength)
- {
- nextAnchor = newAnchorList[i + 1];
-
- // If the next anchor has an id attribute
- if(nextAnchor.hasAttribute("id"))
- {
- nextAnchorLink = nextAnchor.getAttribute("id");
- }
- else
- {
- nextAnchorLink = nextAnchor.getAttribute("name");
- }
-
- // If the anchor link is the same as the next anchor link
- if(anchorLink == nextAnchorLink)
- {
- continue;
- }
- }
-
- tidiedAnchorList.push(anchor);
- }
-
- return tidiedAnchorList;
-}
-
-// Tidies a list of colors by removing duplicates and sorting
-function webdeveloper_tidyColors(colorList)
-{
- var color = null;
- var colorListLength = colorList.length;
- var newColorList = new Array();
- var newColorListLength = null;
- var tidiedColorList = new Array();
-
- // Loop through the colors
- for(var i = 0; i < colorListLength; i++)
- {
- newColorList.push(colorList[i]);
- }
-
- newColorList.sort();
-
- newColorListLength = newColorList.length;
-
- // Loop through the colors
- for(i = 0; i < newColorListLength; i++)
- {
- color = newColorList[i];
-
- // If this is not the last color and the color is the same as the next color
- if(i + 1 < newColorListLength && color == newColorList[i + 1])
- {
- continue;
- }
-
- tidiedColorList.push(color);
- }
-
- return tidiedColorList;
-}
-
-// Tidies a list of documents by removing duplicates and sorting
-function webdeveloper_tidyDocuments(documentList)
-{
- var documentListLength = documentList.length;
- var documentURL = null;
- var newDocumentList = new Array();
- var newDocumentListLength = null;
- var pageDocument = null;
- var tidiedDocumentList = new Array();
-
- // Loop through the documents
- for(var i = 0; i < documentListLength; i++)
- {
- newDocumentList.push(documentList[i]);
- }
-
- newDocumentList.sort(webdeveloper_sortDocuments);
-
- newDocumentListLength = newDocumentList.length;
-
- // Loop through the documents
- for(i = 0; i < newDocumentListLength; i++)
- {
- pageDocument = newDocumentList[i];
-
- // If this is not the last document and the document is the same as the next document
- if(i + 1 < newDocumentListLength && pageDocument.documentURI == newDocumentList[i + 1].documentURI)
- {
- continue;
- }
-
- tidiedDocumentList.push(pageDocument);
- }
-
- return tidiedDocumentList;
-}
-
-// Tidies a list of links by removing duplicates and sorting
-function webdeveloper_tidyLinks(linkList)
-{
- var link = null;
- var linkListLength = linkList.length;
- var newLinkList = new Array();
- var newLinkListLength = null;
- var tidiedLinkList = new Array();
-
- // Loop through the links
- for(var i = 0; i < linkListLength; i++)
- {
- link = linkList[i];
-
- // If this link is set
- if(link.href)
- {
- newLinkList.push(link);
- }
- }
-
- newLinkList.sort(webdeveloper_sortLinks);
-
- newLinkListLength = newLinkList.length;
-
- // Loop through the links
- for(i = 0; i < newLinkListLength; i++)
- {
- link = newLinkList[i];
-
- // If this is not the last link and the link is the same as the next link
- if(i + 1 < newLinkListLength && link.href == newLinkList[i + 1].href)
- {
- continue;
- }
-
- tidiedLinkList.push(link);
- }
-
- return tidiedLinkList;
-}
-
-// Tidies a list of scripts by removing duplicates and sorting
-function webdeveloper_tidyScripts(scriptList)
-{
- var script = null;
- var scriptListLength = scriptList.length;
- var newScriptList = new Array();
- var newScriptListLength = null;
- var tidiedScriptList = new Array();
-
- // Loop through the scripts
- for(var i = 0; i < scriptListLength; i++)
- {
- script = scriptList[i];
-
- // If this script and the src is set
- if(script && script.src)
- {
- newScriptList.push(script);
- }
- }
-
- newScriptList.sort(webdeveloper_sortScripts);
-
- newScriptListLength = newScriptList.length;
-
- // Loop through the scripts
- for(i = 0; i < newScriptListLength; i++)
- {
- script = newScriptList[i];
-
- // If this is not the last script and the script is the same as the next script
- if(i + 1 < newScriptListLength && script.src == newScriptList[i + 1].src)
- {
- continue;
- }
-
- tidiedScriptList.push(script);
- }
-
- return tidiedScriptList;
-}
-
-// Tidies a list of style sheets by removing duplicates and sorting
-function webdeveloper_tidyStyleSheets(styleSheetList)
-{
- var styleSheet = null;
- var styleSheetListLength = styleSheetList.length;
- var newStyleSheetList = new Array();
- var newStyleSheetListLength = null;
- var tidiedStyleSheetList = new Array();
-
- // Loop through the style sheets
- for(var i = 0; i < styleSheetListLength; i++)
- {
- styleSheet = styleSheetList[i];
-
- // If this style sheet and the href is set
- if(styleSheet && styleSheet.href)
- {
- newStyleSheetList.push(styleSheet);
- }
- }
-
- newStyleSheetList.sort(webdeveloper_sortStyleSheets);
-
- newStyleSheetListLength = newStyleSheetList.length;
-
- // Loop through the style sheets
- for(i = 0; i < newStyleSheetListLength; i++)
- {
- styleSheet = newStyleSheetList[i];
-
- // If this is not the last style sheet and the style sheet is the same as the next style sheet
- if(i + 1 < newStyleSheetListLength && styleSheet.href == newStyleSheetList[i + 1].href)
- {
- continue;
- }
-
- tidiedStyleSheetList.push(styleSheet);
- }
-
- return tidiedStyleSheetList;
-}
-
-// Updates the information menu
-function webdeveloper_updateInformationMenu(suffix)
-{
- webdeveloper_configureElementByAppliedStyle(document.getElementById("webdeveloper-display-abbreviations-" + suffix), "checked", "webdeveloper-display-abbreviations");
- webdeveloper_configureElementByAppliedStyle(document.getElementById("webdeveloper-display-access-keys-" + suffix), "checked", "webdeveloper-display-access-keys");
- webdeveloper_configureElementByAppliedStyle(document.getElementById("webdeveloper-display-anchors-" + suffix), "checked", "webdeveloper-display-anchors");
- webdeveloper_configureElementByAppliedStyle(document.getElementById("webdeveloper-display-block-size-" + suffix), "checked", "webdeveloper-display-block-size");
- webdeveloper_configureElementByAppliedStyle(document.getElementById("webdeveloper-display-div-order-" + suffix), "checked", "webdeveloper-display-div-order");
- webdeveloper_configureElementByAppliedStyle(document.getElementById("webdeveloper-display-element-information-" + suffix), "checked", "webdeveloper-display-element-information");
- webdeveloper_configureElementByAppliedStyle(document.getElementById("webdeveloper-display-id-class-details-" + suffix), "checked", "webdeveloper-display-id-class-details");
- webdeveloper_configureElementByAppliedStyle(document.getElementById("webdeveloper-display-link-details-" + suffix), "checked", "webdeveloper-display-link-details");
- webdeveloper_configureElementByAppliedStyle(document.getElementById("webdeveloper-display-object-information-" + suffix), "checked", "webdeveloper-display-object-information");
- webdeveloper_configureElementByAppliedStyle(document.getElementById("webdeveloper-display-stack-levels-" + suffix), "checked", "webdeveloper-display-stack-levels");
- webdeveloper_configureElementByAppliedStyle(document.getElementById("webdeveloper-display-tab-index-" + suffix), "checked", "webdeveloper-display-tab-index");
- webdeveloper_configureElementByAppliedStyle(document.getElementById("webdeveloper-display-table-depth-" + suffix), "checked", "webdeveloper-display-table-depth");
- webdeveloper_configureElementByAppliedStyle(document.getElementById("webdeveloper-display-table-information-" + suffix), "checked", "webdeveloper-display-table-information");
- webdeveloper_configureElementByAppliedStyle(document.getElementById("webdeveloper-display-title-attributes-" + suffix), "checked", "webdeveloper-display-title-attributes");
- webdeveloper_configureElementByAppliedStyle(document.getElementById("webdeveloper-display-topographic-information-" + suffix), "checked", "webdeveloper-display-topographic-information");
-}
-
-// Displays all the anchors for the page
-function webdeveloper_viewAnchorInformation()
-{
- var anchor = null;
- var anchorLength = null;
- var anchorLink = null;
- var anchorList = null;
- var divElement = null;
- var documentList = webdeveloper_getDocuments(webdeveloper_getContentWindow());
- var documentLength = documentList.length;
- var documentURL = null;
- var linkElement = null;
- var linkHref = null;
- var linkLength = null;
- var listElement = null;
- var listItemElement = null;
- var oldTab = getBrowser().selectedTab;
- var oldURL = getBrowser().currentURI.spec;
- var generatedDocument = webdeveloper_generateDocument("");
- var bodyElement = webdeveloper_getDocumentBodyElement(generatedDocument);
- var headElement = webdeveloper_getDocumentHeadElement(generatedDocument);
- var headerElement = generatedDocument.createElement("h1");
- var pageDocument = null;
- var pElement = null;
- var scriptElement = generatedDocument.createElement("script");
- var spanElement = null;
- var stringBundle = document.getElementById("webdeveloper-string-bundle");
- var title = stringBundle.getFormattedString("webdeveloper_viewAnchorInformationTitle", [oldURL]);
-
- generatedDocument.title = title;
-
- webdeveloper_addGeneratedStyles(generatedDocument);
-
- headerElement.appendChild(generatedDocument.createTextNode(title));
- bodyElement.appendChild(headerElement);
-
- webdeveloper_addGeneratedTools(generatedDocument);
-
- // Loop through the documents
- for(var i = 0; i < documentLength; i++)
- {
- divElement = generatedDocument.createElement("div");
- headerElement = generatedDocument.createElement("h2");
- linkElement = generatedDocument.createElement("a");
- pageDocument = documentList[i];
- anchorList = webdeveloper_evaluateXPath(pageDocument, "//*[@id] | //a[@name]");
- documentURL = pageDocument.documentURI;
- spanElement = generatedDocument.createElement("span");
-
- // If the tidy information preference is set
- if(webdeveloper_getBooleanPreference("webdeveloper.information.tidy", true))
- {
- anchorList = webdeveloper_tidyAnchors(anchorList);
- }
-
- spanElement.setAttribute("class", "expanded pivot");
- headerElement.appendChild(spanElement);
- linkElement.setAttribute("href", documentURL);
- linkElement.appendChild(generatedDocument.createTextNode(documentURL));
- headerElement.appendChild(linkElement);
- bodyElement.appendChild(headerElement);
-
- anchorLength = anchorList.length;
-
- // If there are no anchors
- if(anchorLength == 0)
- {
- pElement = generatedDocument.createElement("p");
-
- pElement.appendChild(generatedDocument.createTextNode(stringBundle.getString("webdeveloper_noAnchors")));
- divElement.appendChild(pElement);
- }
- else
- {
- listElement = generatedDocument.createElement("ol");
-
- // Loop through the links
- for(var j = 0; j < anchorLength; j++)
- {
- anchor = anchorList[j];
-
- // If the anchor has an id attribute
- if(anchor.hasAttribute("id"))
- {
- anchorLink = "#" + anchor.getAttribute("id");
- }
- else
- {
- anchorLink = "#" + anchor.getAttribute("name");
- }
-
- linkElement = generatedDocument.createElement("a");
- listItemElement = generatedDocument.createElement("li");
-
- linkElement.setAttribute("href", documentURL + anchorLink);
- linkElement.appendChild(generatedDocument.createTextNode(anchorLink));
- listItemElement.appendChild(linkElement);
- listElement.appendChild(listItemElement);
- }
-
- divElement.appendChild(listElement);
- }
-
- divElement.setAttribute("class", "output");
- bodyElement.appendChild(divElement);
- }
-
- scriptElement.setAttribute("defer", "defer");
- scriptElement.setAttribute("src", "chrome://webdeveloper/content/common/xpath.js");
- scriptElement.setAttribute("type", "text/javascript");
- headElement.appendChild(scriptElement);
-
- scriptElement = generatedDocument.createElement("script");
-
- scriptElement.setAttribute("defer", "defer");
- scriptElement.setAttribute("src", "chrome://webdeveloper/content/generated/output_pivot.js");
- scriptElement.setAttribute("type", "text/javascript");
- headElement.appendChild(scriptElement);
-
- // If the open tabs in background preference is set to true
- if(webdeveloper_getBooleanPreference("webdeveloper.open.tabs.background", true))
- {
- getBrowser().selectedTab = oldTab;
- }
-}
-
-// Displays all the colors on the page
-function webdeveloper_viewColorInformation()
-{
- var color = null;
- var colorList = null;
- var colorsLength = null;
- var definitionElement = null;
- var definitionListElement = null;
- var divElement = null;
- var documentList = webdeveloper_getDocuments(webdeveloper_getContentWindow());
- var documentLength = documentList.length;
- var documentURL = null;
- var element = null;
- var oldTab = getBrowser().selectedTab;
- var oldURL = getBrowser().currentURI.spec;
- var generatedDocument = webdeveloper_generateDocument("");
- var bodyElement = webdeveloper_getDocumentBodyElement(generatedDocument);
- var headElement = webdeveloper_getDocumentHeadElement(generatedDocument);
- var headerElement = generatedDocument.createElement("h1");
- var linkElement = generatedDocument.createElement("link");
- var pageDocument = null;
- var scriptElement = generatedDocument.createElement("script");
- var spanElement = null;
- var termElement = null;
- var title = document.getElementById("webdeveloper-string-bundle").getFormattedString("webdeveloper_viewColorInformationTitle", [oldURL]);
- var treeWalker = null;
-
- generatedDocument.title = title;
-
- webdeveloper_addGeneratedStyles(generatedDocument);
-
- linkElement.setAttribute("href", "chrome://webdeveloper/content/stylesheets/generated/view_color_information.css");
- linkElement.setAttribute("rel", "stylesheet");
- linkElement.setAttribute("type", "text/css");
- headElement.appendChild(linkElement);
-
- headerElement.appendChild(generatedDocument.createTextNode(title));
- bodyElement.appendChild(headerElement);
-
- webdeveloper_addGeneratedTools(generatedDocument);
-
- // Loop through the documents
- for(var i = 0; i < documentLength; i++)
- {
- colorList = new Array();
- divElement = generatedDocument.createElement("div");
- headerElement = generatedDocument.createElement("h2");
- linkElement = generatedDocument.createElement("a");
- pageDocument = documentList[i];
- documentURL = pageDocument.documentURI;
- spanElement = generatedDocument.createElement("span");
- treeWalker = pageDocument.createTreeWalker(webdeveloper_getDocumentBodyElement(pageDocument), NodeFilter.SHOW_ELEMENT, null, false);
-
- // Loop through the anchor elements
- while((element = treeWalker.nextNode()) != null)
- {
- webdeveloper_addColor(element, "background-color", colorList);
- webdeveloper_addColor(element, "border-bottom-color", colorList);
- webdeveloper_addColor(element, "border-left-color", colorList);
- webdeveloper_addColor(element, "border-right-color", colorList);
- webdeveloper_addColor(element, "border-top-color", colorList);
- webdeveloper_addColor(element, "color", colorList);
- }
-
- spanElement.setAttribute("class", "expanded pivot");
- headerElement.appendChild(spanElement);
- linkElement.setAttribute("href", documentURL);
- linkElement.appendChild(generatedDocument.createTextNode(documentURL));
- headerElement.appendChild(linkElement);
- bodyElement.appendChild(headerElement);
-
- colorList = webdeveloper_tidyColors(colorList);
- colorsLength = colorList.length;
-
- // Loop through the colors
- for(var j = 0; j < colorsLength; j++)
- {
- color = colorList[j];
- definitionElement = generatedDocument.createElement("dd");
- definitionListElement = generatedDocument.createElement("dl");
- termElement = generatedDocument.createElement("dt");
-
- termElement.appendChild(generatedDocument.createTextNode(color));
- definitionListElement.appendChild(termElement);
-
- definitionElement.setAttribute("style", "background-color: " + color);
- definitionListElement.appendChild(definitionElement);
- divElement.appendChild(definitionListElement);
- }
-
- divElement.setAttribute("class", "output");
- bodyElement.appendChild(divElement);
- }
-
- scriptElement.setAttribute("defer", "defer");
- scriptElement.setAttribute("src", "chrome://webdeveloper/content/common/xpath.js");
- scriptElement.setAttribute("type", "text/javascript");
- headElement.appendChild(scriptElement);
-
- scriptElement = generatedDocument.createElement("script");
-
- scriptElement.setAttribute("defer", "defer");
- scriptElement.setAttribute("src", "chrome://webdeveloper/content/generated/output_pivot.js");
- scriptElement.setAttribute("type", "text/javascript");
- headElement.appendChild(scriptElement);
-
- // If the open tabs in background preference is set to true
- if(webdeveloper_getBooleanPreference("webdeveloper.open.tabs.background", true))
- {
- getBrowser().selectedTab = oldTab;
- }
-}
-
-// Displays an outline of the page
-function webdeveloper_viewDocumentOutline()
-{
- var divElement = null;
- var documentList = webdeveloper_getDocuments(webdeveloper_getContentWindow());
- var documentLength = documentList.length;
- var documentURL = null;
- var headerElementList = null;
- var headerElementsLength = null;
- var headerLevel = null;
- var headerTagName = null;
- var headerText = null;
- var oldTab = getBrowser().selectedTab;
- var oldURL = getBrowser().currentURI.spec;
- var generatedDocument = webdeveloper_generateDocument("");
- var bodyElement = webdeveloper_getDocumentBodyElement(generatedDocument);
- var headElement = webdeveloper_getDocumentHeadElement(generatedDocument);
- var headerElement = generatedDocument.createElement("h1");
- var linkElement = generatedDocument.createElement("link");
- var outlineElement = null;
- var pageDocument = null;
- var previousHeaderLevel = null;
- var scriptElement = generatedDocument.createElement("script");
- var spanElement = null;
- var stringBundle = document.getElementById("webdeveloper-string-bundle");
- var title = stringBundle.getFormattedString("webdeveloper_viewDocumentOutlineTitle", [oldURL]);
- var treeWalker = null;
-
- generatedDocument.title = title;
-
- webdeveloper_addGeneratedStyles(generatedDocument);
-
- linkElement.setAttribute("href", "chrome://webdeveloper/content/stylesheets/generated/view_document_outline.css");
- linkElement.setAttribute("rel", "stylesheet");
- linkElement.setAttribute("type", "text/css");
- headElement.appendChild(linkElement);
-
- headerElement.appendChild(generatedDocument.createTextNode(title));
- bodyElement.appendChild(headerElement);
-
- webdeveloper_addGeneratedTools(generatedDocument);
-
- // Loop through the documents
- for(var i = 0; i < documentLength; i++)
- {
- divElement = generatedDocument.createElement("div");
- headerElement = generatedDocument.createElement("h2");
- linkElement = generatedDocument.createElement("a");
- pageDocument = documentList[i];
- documentURL = pageDocument.documentURI;
- headerElementList = webdeveloper_evaluateXPath(pageDocument, "//h1 | //h2 | //h3 | //h4 | //h5 | //h6");
- headerElementsLength = headerElementList.length;
- previousHeaderLevel = 0;
- spanElement = generatedDocument.createElement("span");
-
- spanElement.setAttribute("class", "expanded pivot");
- headerElement.appendChild(spanElement);
- linkElement.setAttribute("href", documentURL);
- linkElement.appendChild(generatedDocument.createTextNode(documentURL));
- headerElement.appendChild(linkElement);
- bodyElement.appendChild(headerElement);
-
- // Loop through the heading elements
- for(var j = 0; j < headerElementsLength; j++)
- {
- headerElement = headerElementList[j];
- headerTagName = headerElement.tagName.toLowerCase();
- headerText = webdeveloper_getElementText(headerElement).trim();
- headerLevel = parseInt(headerTagName.substring(1));
-
- // Loop through any missing headers
- for(var k = previousHeaderLevel + 1; k < headerLevel; k++)
- {
- outlineElement = generatedDocument.createElement("h" + k);
-
- outlineElement.setAttribute("class", "webdeveloper-document-outline webdeveloper-document-outline-missing");
- outlineElement.appendChild(generatedDocument.createTextNode(stringBundle.getString("webdeveloper_viewDocumentOutlineMissingHeading")));
- divElement.appendChild(outlineElement);
- }
-
- // If there is no header text
- if(!headerText)
- {
- headerText = stringBundle.getString("webdeveloper_viewDocumentOutlineEmptyHeading");
- }
-
- outlineElement = generatedDocument.createElement(headerTagName);
-
- outlineElement.setAttribute("class", "webdeveloper-document-outline");
- outlineElement.appendChild(generatedDocument.createTextNode(headerText));
- divElement.appendChild(outlineElement);
-
- previousHeaderLevel = headerLevel;
- }
-
- divElement.setAttribute("class", "output");
- bodyElement.appendChild(divElement);
- }
-
- scriptElement.setAttribute("defer", "defer");
- scriptElement.setAttribute("src", "chrome://webdeveloper/content/common/xpath.js");
- scriptElement.setAttribute("type", "text/javascript");
- headElement.appendChild(scriptElement);
-
- scriptElement = generatedDocument.createElement("script");
-
- scriptElement.setAttribute("defer", "defer");
- scriptElement.setAttribute("src", "chrome://webdeveloper/content/generated/output_pivot.js");
- scriptElement.setAttribute("type", "text/javascript");
- headElement.appendChild(scriptElement);
-
- // If the open tabs in background preference is set to true
- if(webdeveloper_getBooleanPreference("webdeveloper.open.tabs.background", true))
- {
- getBrowser().selectedTab = oldTab;
- }
-}
-
-// View JavaScript
-function webdeveloper_viewJavaScript()
-{
- var divElement = null;
- var documentList = webdeveloper_getDocuments(webdeveloper_getContentWindow());
- var documentLength = documentList.length;
- var documentURL = null;
- var linkElement = null;
- var oldTab = getBrowser().selectedTab;
- var oldURL = getBrowser().currentURI.spec;
- var generatedDocument = webdeveloper_generateDocument("");
- var bodyElement = webdeveloper_getDocumentBodyElement(generatedDocument);
- var headElement = webdeveloper_getDocumentHeadElement(generatedDocument);
- var headerElement = generatedDocument.createElement("h1");
- var pageDocument = null;
- var preElement = null;
- var scriptElement = null;
- var scriptLength = null;
- var scriptList = new Array();
- var scriptSource = null;
- var spanElement = null;
- var stringBundle = document.getElementById("webdeveloper-string-bundle");
- var title = stringBundle.getFormattedString("webdeveloper_viewJavaScriptTitle", [oldURL]);
-
- generatedDocument.title = title;
-
- webdeveloper_addGeneratedStyles(generatedDocument);
-
- headerElement.appendChild(generatedDocument.createTextNode(title));
- bodyElement.appendChild(headerElement);
-
- webdeveloper_addGeneratedTools(generatedDocument);
-
- // Loop through the documents
- for(var i = 0; i < documentLength; i++)
- {
- headerElement = generatedDocument.createElement("h2");
- linkElement = generatedDocument.createElement("a");
- pageDocument = documentList[i];
- documentURL = pageDocument.documentURI;
- scriptList = pageDocument.getElementsByTagName("script");
- scriptLength = scriptList.length;
-
- linkElement.setAttribute("href", pageDocument.documentURI);
- linkElement.appendChild(generatedDocument.createTextNode(documentURL));
- headerElement.appendChild(linkElement);
- bodyElement.appendChild(headerElement);
-
- // Loop through the scripts
- for(var j = 0; j < scriptLength; j++)
- {
- divElement = generatedDocument.createElement("div");
- headerElement = generatedDocument.createElement("h3");
- preElement = generatedDocument.createElement("pre");
- scriptElement = scriptList[j];
- scriptSource = scriptElement.src;
- spanElement = generatedDocument.createElement("span");
-
- // If the script is external
- if(scriptSource)
- {
- // If this is a not chrome script
- if(scriptSource.indexOf("chrome://") != 0)
- {
- linkElement = generatedDocument.createElement("a");
-
- spanElement.setAttribute("class", "expanded pivot");
- headerElement.appendChild(spanElement);
- linkElement.setAttribute("href", scriptSource);
- linkElement.appendChild(generatedDocument.createTextNode(scriptSource));
- headerElement.appendChild(linkElement);
- bodyElement.appendChild(headerElement);
-
- preElement.appendChild(generatedDocument.createTextNode(webdeveloper_retrieveSource(scriptSource).replace(new RegExp("\r", "gi"), "\n")));
- divElement.setAttribute("class", "output");
- divElement.appendChild(preElement);
- bodyElement.appendChild(divElement);
- }
- }
- else
- {
- spanElement.setAttribute("class", "expanded pivot");
- headerElement.appendChild(spanElement);
- headerElement.appendChild(generatedDocument.createTextNode(stringBundle.getFormattedString("webdeveloper_inlineScript", [documentURL])));
- bodyElement.appendChild(headerElement);
-
- preElement.appendChild(generatedDocument.createTextNode(scriptElement.innerHTML));
- divElement.setAttribute("class", "output");
- divElement.appendChild(preElement);
- bodyElement.appendChild(divElement);
- }
- }
- }
-
- scriptElement = generatedDocument.createElement("script");
-
- scriptElement.setAttribute("defer", "defer");
- scriptElement.setAttribute("src", "chrome://webdeveloper/content/common/xpath.js");
- scriptElement.setAttribute("type", "text/javascript");
- headElement.appendChild(scriptElement);
-
- scriptElement = generatedDocument.createElement("script");
-
- scriptElement.setAttribute("defer", "defer");
- scriptElement.setAttribute("src", "chrome://webdeveloper/content/generated/output_pivot.js");
- scriptElement.setAttribute("type", "text/javascript");
- headElement.appendChild(scriptElement);
-
- // If the open tabs in background preference is set to true
- if(webdeveloper_getBooleanPreference("webdeveloper.open.tabs.background", true))
- {
- getBrowser().selectedTab = oldTab;
- }
-}
-
-// Displays all the links for the page
-function webdeveloper_viewLinkInformation()
-{
- var divElement = null;
- var documentList = webdeveloper_getDocuments(webdeveloper_getContentWindow());
- var documentLength = documentList.length;
- var documentURL = null;
- var link = null;
- var linkElement = null;
- var linkHref = null;
- var linkLength = null;
- var links = null;
- var listElement = null;
- var listItemElement = null;
- var oldTab = getBrowser().selectedTab;
- var oldURL = getBrowser().currentURI.spec;
- var generatedDocument = webdeveloper_generateDocument("");
- var bodyElement = webdeveloper_getDocumentBodyElement(generatedDocument);
- var headElement = webdeveloper_getDocumentHeadElement(generatedDocument);
- var headerElement = generatedDocument.createElement("h1");
- var pageDocument = null;
- var pElement = null;
- var scriptElement = generatedDocument.createElement("script");
- var spanElement = null;
- var stringBundle = document.getElementById("webdeveloper-string-bundle");
- var title = stringBundle.getFormattedString("webdeveloper_viewLinkInformationTitle", [oldURL]);
-
- generatedDocument.title = title;
-
- webdeveloper_addGeneratedStyles(generatedDocument);
-
- headerElement.appendChild(generatedDocument.createTextNode(title));
- bodyElement.appendChild(headerElement);
-
- webdeveloper_addGeneratedTools(generatedDocument);
-
- // Loop through the documents
- for(var i = 0; i < documentLength; i++)
- {
- divElement = generatedDocument.createElement("div");
- headerElement = generatedDocument.createElement("h2");
- linkElement = generatedDocument.createElement("a");
- pageDocument = documentList[i];
- documentURL = pageDocument.documentURI;
- links = pageDocument.links;
- spanElement = generatedDocument.createElement("span");
-
- // If the tidy information preference is set
- if(webdeveloper_getBooleanPreference("webdeveloper.information.tidy", true))
- {
- links = webdeveloper_tidyLinks(links);
- }
-
- spanElement.setAttribute("class", "expanded pivot");
- headerElement.appendChild(spanElement);
- linkElement.setAttribute("href", documentURL);
- linkElement.appendChild(generatedDocument.createTextNode(documentURL));
- headerElement.appendChild(linkElement);
- bodyElement.appendChild(headerElement);
-
- linkLength = links.length;
-
- // If there are no links
- if(linkLength == 0)
- {
- pElement = generatedDocument.createElement("p");
-
- pElement.appendChild(generatedDocument.createTextNode(stringBundle.getString("webdeveloper_noLinks")));
- divElement.appendChild(pElement);
- }
- else
- {
- listElement = generatedDocument.createElement("ol");
-
- // Loop through the links
- for(var j = 0; j < linkLength; j++)
- {
- link = links[j];
- linkHref = link.href;
-
- // If the link is set
- if(linkHref)
- {
- linkElement = generatedDocument.createElement("a");
- listItemElement = generatedDocument.createElement("li");
-
- linkElement.setAttribute("href", linkHref);
- linkElement.appendChild(generatedDocument.createTextNode(linkHref));
- listItemElement.appendChild(linkElement);
- listElement.appendChild(listItemElement);
- }
- }
-
- divElement.appendChild(listElement);
- }
-
- divElement.setAttribute("class", "output");
- bodyElement.appendChild(divElement);
- }
-
- scriptElement.setAttribute("defer", "defer");
- scriptElement.setAttribute("src", "chrome://webdeveloper/content/common/xpath.js");
- scriptElement.setAttribute("type", "text/javascript");
- headElement.appendChild(scriptElement);
-
- scriptElement = generatedDocument.createElement("script");
-
- scriptElement.setAttribute("defer", "defer");
- scriptElement.setAttribute("src", "chrome://webdeveloper/content/generated/output_pivot.js");
- scriptElement.setAttribute("type", "text/javascript");
- headElement.appendChild(scriptElement);
-
- // If the open tabs in background preference is set to true
- if(webdeveloper_getBooleanPreference("webdeveloper.open.tabs.background", true))
- {
- getBrowser().selectedTab = oldTab;
- }
-}
-
-// Displays all the meta tags for the page
-function webdeveloper_viewMetaTagInformation()
-{
- var cellDataElement = null;
- var cellHeaderElement = null;
- var divElement = null;
- var documentList = webdeveloper_getDocuments(webdeveloper_getContentWindow());
- var documentLength = documentList.length;
- var documentURL = null;
- var linkElement = null;
- var metaTag = null;
- var metaTags = null;
- var metaTagsLength = null;
- var oldTab = getBrowser().selectedTab;
- var oldURL = getBrowser().currentURI.spec;
- var generatedDocument = webdeveloper_generateDocument("");
- var bodyElement = webdeveloper_getDocumentBodyElement(generatedDocument);
- var headElement = webdeveloper_getDocumentHeadElement(generatedDocument);
- var headerElement = generatedDocument.createElement("h1");
- var pageDocument = null;
- var pElement = null;
- var scriptElement = generatedDocument.createElement("script");
- var spanElement = null;
- var stringBundle = document.getElementById("webdeveloper-string-bundle");
- var tableElement = null;
- var tableRowElement = null;
- var title = stringBundle.getFormattedString("webdeveloper_viewMetaTagInformationTitle", [oldURL]);
-
- generatedDocument.title = title;
-
- webdeveloper_addGeneratedStyles(generatedDocument);
-
- headerElement.appendChild(generatedDocument.createTextNode(title));
- bodyElement.appendChild(headerElement);
-
- webdeveloper_addGeneratedTools(generatedDocument);
-
- // Loop through the documents
- for(var i = 0; i < documentLength; i++)
- {
- divElement = generatedDocument.createElement("div");
- headerElement = generatedDocument.createElement("h2");
- linkElement = generatedDocument.createElement("a");
- pageDocument = documentList[i];
- documentURL = pageDocument.documentURI;
- metaTags = pageDocument.getElementsByTagName("meta");
- metaTagsLength = metaTags.length;
- spanElement = generatedDocument.createElement("span");
-
- spanElement.setAttribute("class", "expanded pivot");
- headerElement.appendChild(spanElement);
- linkElement.setAttribute("href", documentURL);
- linkElement.appendChild(generatedDocument.createTextNode(documentURL));
- headerElement.appendChild(linkElement);
- bodyElement.appendChild(headerElement);
-
- // If there are no meta tags
- if(metaTagsLength == 0)
- {
- pElement = generatedDocument.createElement("p");
-
- pElement.appendChild(generatedDocument.createTextNode(stringBundle.getString("webdeveloper_noMetaTags")));
- divElement.appendChild(pElement);
- }
- else
- {
- tableElement = generatedDocument.createElement("table");
- tableRowElement = generatedDocument.createElement("tr");
-
- // Name heading
- cellHeaderElement = generatedDocument.createElement("th");
-
- cellHeaderElement.appendChild(generatedDocument.createTextNode(stringBundle.getString("webdeveloper_name")));
- tableRowElement.appendChild(cellHeaderElement);
-
- // Content heading
- cellHeaderElement = generatedDocument.createElement("th");
-
- cellHeaderElement.appendChild(generatedDocument.createTextNode(stringBundle.getString("webdeveloper_content")));
- tableRowElement.appendChild(cellHeaderElement);
- tableElement.appendChild(tableRowElement);
-
- // Loop through the meta tags
- for(var j = 0; j < metaTagsLength; j++)
- {
- metaTag = metaTags[j];
- tableRowElement = generatedDocument.createElement("tr");
-
- // If this is an even row
- if(j % 2 != 0)
- {
- tableRowElement.setAttribute("class", "shaded");
- }
-
- cellDataElement = generatedDocument.createElement("td");
-
- // If the meta tag has a name attribute
- if(metaTag.hasAttribute("name"))
- {
- cellDataElement.appendChild(generatedDocument.createTextNode(metaTag.getAttribute("name")));
- }
- else if(metaTag.hasAttribute("http-equiv"))
- {
- cellDataElement.appendChild(generatedDocument.createTextNode(metaTag.getAttribute("http-equiv")));
- }
-
- tableRowElement.appendChild(cellDataElement);
-
- // Content
- cellDataElement = generatedDocument.createElement("td");
-
- cellDataElement.appendChild(generatedDocument.createTextNode(metaTag.getAttribute("content")));
- tableRowElement.appendChild(cellDataElement);
- tableElement.appendChild(tableRowElement);
- }
-
- tableElement.setAttribute("class", "sortable");
- divElement.appendChild(tableElement);
- }
-
- divElement.setAttribute("class", "output");
- bodyElement.appendChild(divElement);
- }
-
- scriptElement.setAttribute("defer", "defer");
- scriptElement.setAttribute("src", "chrome://webdeveloper/content/common/dom.js");
- scriptElement.setAttribute("type", "text/javascript");
- headElement.appendChild(scriptElement);
-
- scriptElement = generatedDocument.createElement("script");
-
- scriptElement.setAttribute("defer", "defer");
- scriptElement.setAttribute("src", "chrome://webdeveloper/content/common/xpath.js");
- scriptElement.setAttribute("type", "text/javascript");
- headElement.appendChild(scriptElement);
-
- scriptElement = generatedDocument.createElement("script");
-
- scriptElement.setAttribute("defer", "defer");
- scriptElement.setAttribute("src", "chrome://webdeveloper/content/generated/output_pivot.js");
- scriptElement.setAttribute("type", "text/javascript");
- headElement.appendChild(scriptElement);
-
- scriptElement = generatedDocument.createElement("script");
-
- scriptElement.setAttribute("defer", "defer");
- scriptElement.setAttribute("src", "chrome://webdeveloper/content/generated/table_sort.js");
- scriptElement.setAttribute("type", "text/javascript");
- headElement.appendChild(scriptElement);
-
- // If the open tabs in background preference is set to true
- if(webdeveloper_getBooleanPreference("webdeveloper.open.tabs.background", true))
- {
- getBrowser().selectedTab = oldTab;
- }
-}
-
-// View page information
-function webdeveloper_viewPageInformation(chromeLocation)
-{
- window.openDialog(chromeLocation, "webdeveloper-page-information-dialog", "chrome,dialog=no,resizable");
-}
-
-// View the response headers
-function webdeveloper_viewResponseHeaders()
-{
- var headerElement = null;
- var oldTab = getBrowser().selectedTab;
- var oldURL = getBrowser().currentURI.spec;
- var generatedDocument = webdeveloper_generateDocument("");
- var bodyElement = webdeveloper_getDocumentBodyElement(generatedDocument);
- var preElement = null;
- var request = new XMLHttpRequest();
- var responseHeaders = null;
- var title = document.getElementById("webdeveloper-string-bundle").getFormattedString("webdeveloper_viewResponseHeadersTitle", [oldURL]);
-
- request.open("get", oldURL, false);
- request.send(null);
-
- responseHeaders = request.getAllResponseHeaders();
- generatedDocument.title = title;
-
- webdeveloper_addGeneratedStyles(generatedDocument);
-
- headerElement = generatedDocument.createElement("h1");
- headerElement.appendChild(generatedDocument.createTextNode(title));
- bodyElement.appendChild(headerElement);
-
- preElement = generatedDocument.createElement("pre");
- preElement.appendChild(generatedDocument.createTextNode(responseHeaders + "\n" + request.status + " " + request.statusText));
- bodyElement.appendChild(preElement);
-
- // If the open tabs in background preference is set to true
- if(webdeveloper_getBooleanPreference("webdeveloper.open.tabs.background", true))
- {
- getBrowser().selectedTab = oldTab;
- }
-}