-
Enhancement
-
Resolution: Won't Fix
-
P4
-
8u60
-
x86
-
windows_8
FULL PRODUCT VERSION :
8u60
A DESCRIPTION OF THE PROBLEM :
The following code in dtjava.js is used to define the location of the code base:
var jscodebase = (function () {
// <script> elements are added to the DOM and run synchronously,
// the currently running script will also be the last element in the array
var scripts = document.getElementsByTagName("script");
var src = scripts[scripts.length - 1].getAttribute("src");
return src.substring(0, src.lastIndexOf('/') + 1);
})();
When scripts are loaded asynchronously, the assumption that dtjava.js will be the last element in scripts is not generally met.
In cases where scripts[scripts.length - 1].getAttribute("src") returns null, this throws an error.
In other cases, the returned value will not generally describe the location of dtjava.js.
EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
The code should return the base for the location of dtjava,js.
ACTUAL -
With asynchronous script loading:
1. The code fails with an error for if scripts[length-1] has no src attribute.
2. In other cases, the returned code base will not generally be correct. As a result, dtjava.js will generate 404s when attempting to load images such as error.png.
REPRODUCIBILITY :
This bug can be reproduced always.
---------- BEGIN SOURCE ----------
Likely to occur in any web page using dtjava.js with asynchronous script loading.
---------- END SOURCE ----------
CUSTOMER SUBMITTED WORKAROUND :
Simply iterating over the scripts list in the function to fine dtjava.js instead of assuming it is the last script in the list would fix this issue.
8u60
A DESCRIPTION OF THE PROBLEM :
The following code in dtjava.js is used to define the location of the code base:
var jscodebase = (function () {
// <script> elements are added to the DOM and run synchronously,
// the currently running script will also be the last element in the array
var scripts = document.getElementsByTagName("script");
var src = scripts[scripts.length - 1].getAttribute("src");
return src.substring(0, src.lastIndexOf('/') + 1);
})();
When scripts are loaded asynchronously, the assumption that dtjava.js will be the last element in scripts is not generally met.
In cases where scripts[scripts.length - 1].getAttribute("src") returns null, this throws an error.
In other cases, the returned value will not generally describe the location of dtjava.js.
EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
The code should return the base for the location of dtjava,js.
ACTUAL -
With asynchronous script loading:
1. The code fails with an error for if scripts[length-1] has no src attribute.
2. In other cases, the returned code base will not generally be correct. As a result, dtjava.js will generate 404s when attempting to load images such as error.png.
REPRODUCIBILITY :
This bug can be reproduced always.
---------- BEGIN SOURCE ----------
Likely to occur in any web page using dtjava.js with asynchronous script loading.
---------- END SOURCE ----------
CUSTOMER SUBMITTED WORKAROUND :
Simply iterating over the scripts list in the function to fine dtjava.js instead of assuming it is the last script in the list would fix this issue.