home *** CD-ROM | disk | FTP | other *** search
/ PC World Plus! (NZ) 2001 February / 001221_1330.iso / browsers / IE505 / WIN32 / EN / IEW2K_3.CAB / shdoclc.dll / HTML / ANALYZE.DLG < prev    next >
Text File  |  2000-06-06  |  9KB  |  237 lines

  1. <HTML id=dlgAnalyze STYLE="font-family: MS Shell Dlg; font-size: 8pt;
  2. width: 30em; height: 33em">
  3. <HEAD>
  4. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  5. <TITLE id=dialogTitle>
  6. Analyze Document
  7. </TITLE>
  8. <SCRIPT LANGUAGE="JavaScript" defer>
  9. window.onerror = HandleError
  10. function HandleError(message, url, line)
  11. {
  12. var L_Dialog_ErrorMessage = "An error has occured in this dialog.";
  13. var L_ErrorNumber_Text = "Error: ";
  14. var str = L_Dialog_ErrorMessage + "\n\n" 
  15.  + L_ErrorNumber_Text + line + "\n"
  16.  + message;
  17. alert (str);
  18. window.close();
  19. return true;
  20. }
  21. function otherDocument() 
  22. {
  23. return window.dialogArguments.document;
  24. }
  25. function loadBdy()
  26. {
  27. document.all.btnOk.onclick = new Function("window.close();");
  28. document.onkeyup = new Function("documentOnKeyUp()");
  29. runAnalysis();
  30. function documentOnKeyUp()
  31. {
  32. if (window.event.keyCode == 27)
  33. {
  34.  window.close();
  35. }
  36. function runAnalysis() 
  37. var errorsFound, reportLocation;
  38. errorsFound = false;
  39. reportLocation = document.all.ReportArea;
  40. initializeResults(reportLocation);
  41. errorsFound = errorsFound || checkBodyWithinFrameset(reportLocation);
  42. errorsFound = errorsFound || checkAnythingAfterFrameset(reportLocation);
  43. errorsFound = errorsFound || checkUnloadedComponents(reportLocation);
  44. errorsFound = errorsFound || checkNonApartmentControls(reportLocation);
  45. errorsFound = errorsFound || checkUnloadedStyleSheets(reportLocation);
  46. if (errorsFound == false) {
  47.  reportNothingFound(reportLocation);
  48. }
  49. }
  50. function initializeResults(reportLocation) 
  51. {
  52. reportLocation.innerHTML = " ";
  53. }
  54. function reportNothingFound(reportLocation) 
  55. {
  56. var L_NoErrors_Text = "No errors found.";
  57. reportLocation.innerHTML = L_NoErrors_Text;
  58. }
  59. function checkBodyWithinFrameset(reportLocation) 
  60. {
  61. var theDocument;
  62. var framesets, bodies;
  63. var retVal;
  64. var L_FramesetInBody_Text = "This document might not display properly because there is a FRAMESET within the BODY of the document. The page author can resolve this problem by<OL><li>Removing the BODY tag.</li><li>Insuring that there is no additional HTML code between the HEAD of the document and the FRAMESET.</li></ol><br><hr>";
  65. retVal = false;
  66. theDocument = otherDocument();
  67. framesets = theDocument.all.tags("frameset");
  68. if (framesets.length > 0) {
  69.  bodies = theDocument.all.tags("body");
  70.  if (bodies.length > 0) {
  71.   reportLocation.insertAdjacentHTML("BeforeEnd", L_FramesetInBody_Text );
  72.   retVal = true;
  73.  }
  74. }
  75. return retVal;
  76. }
  77. function checkAnythingAfterFrameset(reportLocation) 
  78. {
  79. var L_ContentAfterFrameset_Text = "This document might not display properly because there is content after the FRAMESET.<br><hr>";
  80. var theDocument;
  81. var framesets;
  82. var i, startIndex;
  83. var retVal;
  84. retVal = false;
  85. theDocument = otherDocument();
  86. framesets = theDocument.all.tags("frameset");
  87. if (framesets.length > 0) {
  88.  startIndex = framesets(0).sourceIndex;
  89.  if (window.dialogArguments.anythingAfterFrameset) {
  90.  reportLocation.insertAdjacentHTML("BeforeEnd", L_ContentAfterFrameset_Text );
  91.  retVal = true;
  92.  }
  93. }
  94. return retVal;
  95. }
  96. function checkUnloadedComponents(reportLocation) 
  97. {
  98. var theDocument;
  99. var objects, applets, embeds;
  100. var retVal;
  101. retVal = false;
  102. theDocument = otherDocument();
  103. objects = theDocument.all.tags("object");
  104. applets = theDocument.all.tags("applet");
  105. embeds = theDocument.all.tags("embed");
  106. retVal = checkReadyStateComplete(objects, reportLocation);
  107. retVal = retVal || checkReadyStateComplete(applets, reportLocation);
  108. retVal = retVal || checkReadyStateComplete(embeds, reportLocation);
  109. return retVal;
  110. }
  111. function checkReadyStateComplete(objects, reportLocation) 
  112. {
  113. var L_ObjectNotInstalled_Text = "The following OBJECT did not install properly.<BR>";
  114. var L_AppletNotInstalled_Text = "The following APPLET did not install properly.<BR>";
  115. var L_EmbedNotInstalled_Text = "The following EMBED did not install properly.<BR>";
  116. var L_ObjectNotInstalledReasons_Text = "<br><br>This might have been caused by one of the following conditions:<OL><LI>Your current security settings prevent this OBJECT from being used.</li><li>This OBJECT was not properly installed on your computer.</li><li>The page or OBJECT was authored incorrectly.</li></ul><hr>";
  117. var L_AppletNotInstalledReasons_Text = "<br><br>This might have been caused by one of the following conditions:<OL><LI>Your current security settings prevent this APPLET from being used.</li><li>This APPLET was not properly installed on your computer.</li><li>The page or APPLET was authored incorrectly.</li></ul><hr>";
  118. var L_EmbedNotInstalledReasons_Text = "<br><br>This might have been caused by one of the following conditions:<OL><LI>Your current security settings prevent this EMBED from being used.</li><li>This EMBED was not properly installed on your computer.</li><li>The page or EMBED was authored incorrectly.</li></ul><hr>";
  119. var strNotInstalled;
  120. var strNotInstalledReason;
  121. var i, element;
  122. var retVal;
  123. retVal = false;
  124. if (objects == null) 
  125.  return retVal;
  126. for (i=0; i < objects.length; i++) {
  127.  element = objects(i);
  128.  if (element.readyState != 4 && element.readyState != "complete") {
  129.   switch (element.tagName.toLowerCase())
  130.   {
  131.   case "object":
  132.    strNotInstalled = L_ObjectNotInstalled_Text;
  133.    strNotInstalledReason = L_ObjectNotInstalledReasons_Text;
  134.    break;
  135.   case "applet":
  136.    strNotInstalled = L_AppletNotInstalled_Text;
  137.    strNotInstalledReason = L_AppletNotInstalledReasons_Text;
  138.    break;
  139.   case "embed":
  140.    strNotInstalled = L_EmbedNotInstalled_Text;
  141.    strNotInstalledReason = L_EmbedNotInstalledReasons_Text;
  142.    break;
  143.   }
  144.  reportLocation.insertAdjacentHTML("BeforeEnd", strNotInstalled);
  145.  reportLocation.insertAdjacentText("BeforeEnd", element.outerHTML);
  146.  reportLocation.insertAdjacentHTML("BeforeEnd", strNotInstalledReason);
  147.  retVal = true;
  148.  }
  149. }
  150. return retVal;
  151. }
  152. function checkNonApartmentControls(reportLocation) 
  153. {
  154. var L_ObjectNotApartmentModel_Text = "The following OBJECT may not work reliably in all circumstances because it doesn't use the Apartment threading model.<br>";
  155. var theDocument;
  156. var objects;
  157. var i;
  158. var retVal;
  159. retVal = false;
  160. theDocument = otherDocument();
  161. objects = theDocument.all.tags("object");
  162. for (i=0; i < objects.length; i++) {
  163.  element = objects(i);
  164.  nonApartmentModel = checkCLSIDForNonApartmentModel(element);
  165.  retVal = retVal || nonApartmentModel;
  166.  if (nonApartmentModel == true) {
  167.  reportLocation.insertAdjacentHTML("BeforeEnd", L_ObjectNotApartmentModel_Text);
  168.  reportLocation.insertAdjacentText("BeforeEnd", element.outerHTML);
  169.  reportLocation.insertAdjacentHTML("BeforeEnd", "<br><hr>");
  170.  }
  171. return retVal;
  172. }
  173. function checkCLSIDForNonApartmentModel(element) {
  174. return !(window.dialogArguments.isApartmentModel(element));
  175. }
  176. function checkUnloadedStyleSheets(reportLocation) 
  177. {
  178. var theDocument;
  179. var links;
  180. var retVal;
  181. retVal = false;
  182. theDocument = otherDocument();
  183. links = theDocument.all.tags("link");
  184. retVal = checkLinkReadyStateComplete(links, reportLocation);
  185. return retVal;
  186. }
  187. function checkLinkReadyStateComplete(objects, reportLocation) 
  188. {
  189. var i, element;
  190. var retVal;
  191. var L_StyleSheetNotInstalled_Text = "This document might not display properly because the following style sheet did not get installed: ";
  192. retVal = false;
  193. if (objects == null) 
  194.  return retVal;
  195. for (i=0; i < objects.length; i++) {
  196.  element = objects(i);
  197.  if (element.rel.toLowerCase() == "stylesheet"
  198.   || element.rel.toLowerCase() == "alternate stylesheet")
  199.  {
  200.   if (element.readyState != "complete" && element.readyState != 4) {
  201.   reportLocation.insertAdjacentHTML("BeforeEnd", L_StyleSheetNotInstalled_Text + element.href + "<BR><hr>");
  202.   retVal = true;
  203.   }
  204.  }
  205.  }
  206. return retVal;
  207. }
  208. </SCRIPT>
  209. </HEAD>
  210. <BODY ID=bdy onLoad="loadBdy()" style="font-family: 'MS Shell Dlg';
  211. font-size: 8pt; background: threedface; color: windowtext;" 
  212. topmargin=0 scroll=no>
  213. <br id=brAnalysis>  Analysis of current document:<br>
  214. <br>
  215. <DIV id=ReportArea style="height: 75%; width: 93%; 
  216. position: absolute; left: 5%; top: 12%; overflow: auto; padding: 3px;
  217. border-style: solid; border-width: 1px; border-color: threeddarkshadow">
  218. No errors found.
  219. </DIV>
  220. <br id=br2><P id=par1> </P>
  221. <DIV id=divButton style="font-family: MS Shell Dlg; font-size: 8pt; 
  222. width: 8em; height: 2.2em; position: absolute;
  223. top: 27.1em; left: 20em; background: threedface;">
  224. </DIV>
  225. <BUTTON id=btnOk tabIndex=55 
  226. style="font-family: MS Shell Dlg; font-size: 8pt; 
  227. width: 7em; height: 2.2em; position: absolute;
  228. top: 27.5em; left: 21em" type=submit>
  229. OK
  230. </BUTTON>
  231. </BODY>
  232. </HTML>
  233.