2014-12-24 5 views
0

Я следую за старым учебником (из книги) для JavaScript, и у меня есть некоторые проблемы с его работой. ОС - Windows 7/84, а IDE - NetBeans 8.02. Браузеры - это IE 11 и последние версии Chrome и Firefox.Абсолютный путь Javascript к файлу ресурсов и классу java

Вот код:

<HTML> 
    <HEAD><TITLE>Detecting embedded objects (applets, plug-ins, etc.)</TITLE> 

     <SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript"> 
<!-- Hide from browsers that do not support JavaScript 
      function detectPlugins() { 
       if (navigator.plugins.length > 0) { 
        var pluginDescription = ""; 

        for (var numPlugins = 0; numPlugins < navigator.plugins.length; numPlugins++) { 
         pluginDescription = pluginDescription + " " + navigator.plugins[numPlugins].name 
        } 

        alert(navigator.plugins.length + " browser plug-ins detected: " 
          + pluginDescription); 

       } 
       else { 
        alert("No browser plug-ins detected. (Remember, IE doesn't support plug-ins.)") 
       } 

      } 


      function detectApplets() { 
       if (document.applets.length > 0) { 
        alert(document.applets.length + " Java applets detected. (Rememember, IE counts applets as embedded objects.)") 

       } 
       else { 
        alert("No Java applets detected.") 
       } 
      } 

      function detectEmbeds() { 

       if (navigator.appName == "Microsoft Internet Explorer") { 
        // The user is running IE, so check for objects 
        // embedded using the OBJECT tag. 
        // 
        // The readyState property of an object embedded 
        // using the OBJECT property can contain one of 3 
        // values: 
        // 0 = uninitialized 
        // 1 = loading 
        // 4 = finished loading and ready to go 

        if (document.QTsample.readyState == 4) { 
         alert("Detected the QTsample embedded object"); 
        } 

        if (document.clock.readyState == 4) { 
         alert("Detected the clock embedded object"); 
        } 

       } 
       else { 
        if (navigator.appName == "Netscape") { 


         if (document.embeds.length > 0) { 
          alert(document.embeds.length + " embedded object(s) detected.") 


         } 
         else { 
          alert("No embedded objects detected."); 
         } 
        } 
       } 
      } 

      // --> Finish hiding 
     </SCRIPT> 

    </HEAD> 
    <BODY> 
     Two embedded objects appear below: 
     <OL> 
      <LI><b>A sample movie provided free by QuickTime (Sample.mov).</b> 
       Note: IE identifies applets as objects. IE does not recognize browser plug-ins. (IE supports 
       ActiveX objects instead of plug-ins.) 
      <LI><b>A sample Java applet provided free by Sun Microsystems (JavaClock.class)</b> 
       Note: Navigator identifies applets as applets. 
     </OL> 

     <!-- 
     You use the OBJECT tag to embed an ActiveX component into a page meant for MSIE; 
     you use the EMBED tag to embed a plug-in into a page meant for Navigator. 
     Notice the difference between the way the value of the SRC 
     variable must be specified. 
     // --> 

     <OBJECT CLASSID="clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B" WIDTH="320" HEIGHT="250" 
       ID="QTsample" CODEBASE="http://www.apple.com/qtactivex/qtplugin.cab"> 
      <PARAM name="SRC" VALUE="C:\Program Files (x86)\QuickTime\Sample.mov"> 
      <PARAM name="AUTOPLAY" VALUE="true"> 
      <PARAM name="CONTROLLER" VALUE="true"> 

      <EMBED SRC="file://C:\Program Files (x86)\QuickTime\Sample.mov" WIDTH="320" HEIGHT="250" 
        AUTOPLAY="true" CONTROLLER="true" PLUGINSPAGE="http://www.apple.com/quicktime/download/"> 
     </OBJECT> 

     <!-- 
     This Java applet is freely available from Sun Microsystems. For more info, visit http://java.sun.com/openstudio/applets/clock.html 
     Note: the APPLET tag was deprecated in HTML 4.0, which means that programmers are encouraged to use the OBJECT tag 
     (instead of the APPLET tag) to embed Java applets in Web pages. Future browsers may not support the APPLET tag. 
     // --> 

    <APPLET ID="clock" CODEBASE="classes" CODE="JavaClock.class" WIDTH="150" HEIGHT="150"> 
     <PARAM NAME="bgcolor" VALUE="FFFFFF"> 
     <PARAM NAME="border" VALUE="5"> 
     <PARAM NAME="ccolor" VALUE="dddddd"> 
     <PARAM NAME="cfont" VALUE="TimesRoman|BOLD|18"> 
     <PARAM NAME="delay" VALUE="100"> 
     <PARAM NAME="hhcolor" VALUE="0000FF"> 
     <PARAM NAME="link"  VALUE="http://java.sun.com/"> 
     <PARAM NAME="mhcolor" VALUE="00FF00"> 
     <PARAM NAME="ncolor" VALUE="000000"> 
     <PARAM NAME="nradius" VALUE="80"> 
     <PARAM NAME="shcolor" VALUE="FF0000"> 
    </APPLET> 
    <P> 
    <FORM> 
     <INPUT TYPE="button" VALUE="detect embedded objects" onClick="detectEmbeds()"> 
     <INPUT TYPE="button" VALUE="detect plug-ins" onClick="detectPlugins()"> 
     <INPUT TYPE="button" VALUE="detect applets" onClick="detectApplets()"> 
    </FORM> 
</BODY> 
</HTML> 

Первоначально в книге путей были похожи:

<PARAM name="SRC" VALUE="c:\Program Files\QuickTime\Sample.mov"> 

и

<EMBED SRC="file://c:\Program Files\QuickTime\Sample.mov" WIDTH="320" 
HEIGHT="250" AUTOPLAY="true" CONTROLLER="true" 
PLUGINSPAGE="http://www.apple.com/quicktime/download/"> 

Так что я изменился, что с учетом 7 64 битную путь программы для Windows , Это не сработало. Затем я переместил Sample.mov в C: \ Sample.mov и обновил пути в коде, но это тоже не сработало? Затем я переместил Sample.mov в ту же папку, где находится html, обновил пути только до «Sample.mov» без «C: \». И это сработало. Я пробовал все возможные комбинации до этого (/ или // или \ или файл: /// C:/... и т. Д.). Но он работает только без какого-либо пути.

Так что для того, чтобы сделать открытие видео QuickTime как в IE и Firefox, я закончил с этим:

<OBJECT CLASSID="clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B" WIDTH="320" HEIGHT="250" 
     ID="QTsample" CODEBASE="http://www.apple.com/qtactivex/qtplugin.cab"> 
    <PARAM name="SRC" VALUE="Sample.mov"> 
    <PARAM name="AUTOPLAY" VALUE="true"> 
    <PARAM name="CONTROLLER" VALUE="true"> 

    <EMBED SRC="Sample.mov" WIDTH="320" HEIGHT="250" 
      AUTOPLAY="true" CONTROLLER="true" PLUGINSPAGE="http://www.apple.com/quicktime/download/"> 
</OBJECT> 

ВОПРОС 1: как я должен заставить его работать с файлом, расположенным за пределами корневого каталога документов, как это предполагалось в подлинном примере.

К сожалению, я не могу заставить работать часы Java. Я также пробовал каждую комбинацию, но браузер просто не «видит» класс JavaClock? Независимо от того, настраиваю ли я его из IDE (Netbeans напрямую, открывая страницу HTMK из браузера (IE, Firefox или Chrome). Браузеры жалуются на то, что JavaClock.class не существует?

ВОПРОС 2 ЯВЛЯЕТСЯ: сделать эту работу класса JavaClock а ?.

файлы расположены также на этом скриншоте: enter image description here

ответ

0

Я только что нашел где ошибка (винить автора книги): Оно должно быть (для CODEBASE) класс не clas SES

Оно должно быть:

<APPLET ID="clock" CODEBASE="class" CODE="JavaClock.class" WIDTH="150" HEIGHT="150"> 

вместо

<APPLET ID="clock" CODEBASE="classes" CODE="JavaClock.class" WIDTH="150" HEIGHT="150"> 

Теперь это нормально (даже на локальной машине):

enter image description here