|
1 | 1 | var url = require('url');
|
2 | 2 | var SockJS = require("sockjs-client");
|
3 | 3 | var stripAnsi = require('strip-ansi');
|
| 4 | + |
| 5 | +function getCurrentScriptSource() { |
| 6 | + // try to get the current script |
| 7 | + if (document.currentScript) { |
| 8 | + return document.currentScript.getAttribute("src"); |
| 9 | + } |
| 10 | + // fall back to getting all scripts in the document |
| 11 | + var scriptElements = document.scripts || [], |
| 12 | + currentScript = scriptElements[scriptElements.length - 1]; |
| 13 | + if (currentScript) { |
| 14 | + return currentScript.getAttribute("src"); |
| 15 | + } |
| 16 | + // fail as there was no script to use |
| 17 | + throw new Error("Failed to get current script source"); |
| 18 | +} |
| 19 | + |
4 | 20 | var urlParts;
|
5 | 21 | if (typeof __resourceQuery === "string" && __resourceQuery) {
|
6 | 22 | // If this bundle is inlined, use the resource query to get the correct url.
|
7 | 23 | urlParts = url.parse(__resourceQuery.substr(1));
|
8 | 24 | } else {
|
9 | 25 | // Else, get the url from the <script> this file was called with.
|
10 |
| - var scriptElements = document.getElementsByTagName("script"); |
11 |
| - var scriptHost = scriptElements[scriptElements.length-1].getAttribute("src"); |
12 |
| - scriptHost = scriptHost && scriptHost.replace(/\/[^\/]+$/, ""); |
| 26 | + var scriptHost = getCurrentScriptSource(); |
| 27 | + scriptHost = scriptHost.replace(/\/[^\/]+$/, ""); |
13 | 28 | urlParts = url.parse((scriptHost ? scriptHost : "/"), false, true);
|
14 | 29 | }
|
15 | 30 |
|
|
0 commit comments