24 lines
868 B
JavaScript
24 lines
868 B
JavaScript
|
/**
|
||
|
* @returns {string}
|
||
|
*/
|
||
|
function getCurrentScriptSource() {
|
||
|
// `document.currentScript` is the most accurate way to find the current script,
|
||
|
// but is not supported in all browsers.
|
||
|
if (document.currentScript) {
|
||
|
return document.currentScript.getAttribute("src");
|
||
|
}
|
||
|
|
||
|
// Fallback to getting all scripts running in the document.
|
||
|
var scriptElements = document.scripts || [];
|
||
|
var scriptElementsWithSrc = Array.prototype.filter.call(scriptElements, function (element) {
|
||
|
return element.getAttribute("src");
|
||
|
});
|
||
|
if (scriptElementsWithSrc.length > 0) {
|
||
|
var currentScript = scriptElementsWithSrc[scriptElementsWithSrc.length - 1];
|
||
|
return currentScript.getAttribute("src");
|
||
|
}
|
||
|
|
||
|
// Fail as there was no script to use.
|
||
|
throw new Error("[webpack-dev-server] Failed to get current script source.");
|
||
|
}
|
||
|
export default getCurrentScriptSource;
|