-
Bug
-
Resolution: Won't Fix
-
P3
-
None
-
8u91
Java applet fails to load applet on specific URL due to timing issue between Java and JavaScript.
Steps to Reproduce:
1) Go to
https://www.medarbejdersignatur.dk/produkter/nemid_medarbejdersignatur/support/noeglefil/test_signatur_med_noeglefil/
A page with the heading "UNDERSØGER JAVA" comes up. The body of the page says "Vent venligst..." ("Please wait...").
2) A dialog asking the user "Do you want to run this application?" pops up.
Click Run.
3) A new page with the heading "UNDERSØGER DIN COMPUTER" is displayed. The
text "Henter og starter NemID CSP-softwaren..." is also displayed.
4) After a few seconds' delay the page is supposed to forward to the login page
(https://www.medarbejdersignatur.dk/produkter/nemid_medarbejdersignatur/#log_paa_selvbetjening, but that never happens due to the fact that the isActive property on the Enroll Applet is undefined at this point, and is never
defined, in the JavaScript DOM's applet object.
To see this, open the Firefox JavaScript debugger (press F12), find the file
https://www.medarbejdersignatur.dk/check-signature-scripts/check-csp-head.js.html,and set a breakpoint in the method onLoadingTimer() on the line that says
"if (enroll.isActive == undefined)". Try pressing F8 to continue a handful of
times, and observe that enroll.isActive stays undefined even after the Java
console says that start() has been called, and hence after isActive SHOULD be
defined.
Since the onLoadingTimer() method is called from the main page,
index.html, using the following snippet of code, enroll.isActive should
return "true" at SOME point, it should not stay "undefined" indefinitely:
$(document).ready(function() {
window.setTimeout(onLoadingTimer, 100);
});
Also, if "100" in the above code snippet is changed to "5000" on our test
machine, enroll.isActive IS defined, and the applet loads correctly, so this
seems to be a timing issue somewhere.
Finally, it has also been observed that waiting a few seconds before
checking whether enroll.isActive is defined in the debugger, it WILL be
defined. We suspect the delay allows the JVM to call start() on the applet,
and that this defines isActive.
Note also that this is a Firefox-only issue. The URL works correctly in
Internet Explorer 11.
java version "1.8.0_75"
Java(TM) SE Runtime Environment (build 1.8.0_75-b10)
Java HotSpot(TM) Client VM (build 25.75-b10, mixed mode)
Does this problem occur on J2SE 7ux, 8ux? Yes / No (be specific version#)
The problem occurs on J2SE 1.8.0u75b10 and J2SE 1.8.0u76b04 but NOT 1.8.0u73
(current production version).
Operating System Configuration Information (be specific):
Windows 7 or Windows 10, both fully updated.
Standard install of Firefox 45.0 and J2SE.
Hardware Configuration Information (be specific):
Virtual machine, so hardware configuration is not available.
Steps to Reproduce:
1) Go to
https://www.medarbejdersignatur.dk/produkter/nemid_medarbejdersignatur/support/noeglefil/test_signatur_med_noeglefil/
A page with the heading "UNDERSØGER JAVA" comes up. The body of the page says "Vent venligst..." ("Please wait...").
2) A dialog asking the user "Do you want to run this application?" pops up.
Click Run.
3) A new page with the heading "UNDERSØGER DIN COMPUTER" is displayed. The
text "Henter og starter NemID CSP-softwaren..." is also displayed.
4) After a few seconds' delay the page is supposed to forward to the login page
(https://www.medarbejdersignatur.dk/produkter/nemid_medarbejdersignatur/#log_paa_selvbetjening, but that never happens due to the fact that the isActive property on the Enroll Applet is undefined at this point, and is never
defined, in the JavaScript DOM's applet object.
To see this, open the Firefox JavaScript debugger (press F12), find the file
https://www.medarbejdersignatur.dk/check-signature-scripts/check-csp-head.js.html,and set a breakpoint in the method onLoadingTimer() on the line that says
"if (enroll.isActive == undefined)". Try pressing F8 to continue a handful of
times, and observe that enroll.isActive stays undefined even after the Java
console says that start() has been called, and hence after isActive SHOULD be
defined.
Since the onLoadingTimer() method is called from the main page,
index.html, using the following snippet of code, enroll.isActive should
return "true" at SOME point, it should not stay "undefined" indefinitely:
$(document).ready(function() {
window.setTimeout(onLoadingTimer, 100);
});
Also, if "100" in the above code snippet is changed to "5000" on our test
machine, enroll.isActive IS defined, and the applet loads correctly, so this
seems to be a timing issue somewhere.
Finally, it has also been observed that waiting a few seconds before
checking whether enroll.isActive is defined in the debugger, it WILL be
defined. We suspect the delay allows the JVM to call start() on the applet,
and that this defines isActive.
Note also that this is a Firefox-only issue. The URL works correctly in
Internet Explorer 11.
java version "1.8.0_75"
Java(TM) SE Runtime Environment (build 1.8.0_75-b10)
Java HotSpot(TM) Client VM (build 25.75-b10, mixed mode)
Does this problem occur on J2SE 7ux, 8ux? Yes / No (be specific version#)
The problem occurs on J2SE 1.8.0u75b10 and J2SE 1.8.0u76b04 but NOT 1.8.0u73
(current production version).
Operating System Configuration Information (be specific):
Windows 7 or Windows 10, both fully updated.
Standard install of Firefox 45.0 and J2SE.
Hardware Configuration Information (be specific):
Virtual machine, so hardware configuration is not available.