Как Вы получаете contextPath от JavaScript, правильного пути?

Используя основанный на Java бэкенд (т.е. сервлеты и JSP), если мне нужен contextPath от JavaScript, каков рекомендуемый шаблон для того, чтобы сделать это, кто-либо почему? Я могу думать о нескольких возможностях. Я скучаю по кому-либо?

1. Запишите ТЕГ SCRIPT в страницу, которая устанавливает его в некоторой переменной JavaScript

<script>var ctx = "<%=request.getContextPath()%>"</script>

Это точно, но требует выполнения сценария при загрузке страницы.

2. Установите contextPath в некоторых скрытый элемент DOM

<span id="ctx" style="display:none;"><%=request.getContextPath()%></span>

Это точно, и не требует никакого выполнения сценария при загрузке страницы. Но Вам действительно нужен запрос DOM когда потребность получить доступ к contextPath. Результат запроса DOM может кэшироваться, если Вы заботитесь так очень о производительности.

3. Попытайтесь понять это в JavaScript путем исследования document.URL или Тег BASE

function() {
    var base = document.getElementsByTagName('base')[0];
    if (base && base.href && (base.href.length > 0)) {
        base = base.href;
    } else {
        base = document.URL;
    }
    return base.substr(0,
        base.indexOf("/", base.indexOf("/", base.indexOf("//") + 2) + 1));
};

Это не требует никакого выполнения сценария при загрузке страницы, и можно также кэшировать результат при необходимости. Но это только работает, если Вы знаете, что Ваш путь контекста является единственным каталогом - в противоположность корневому каталогу (/) или несколько каталогов вниз (/mypath/iscomplicated/).

Какой путь я склоняюсь

Я одобряю скрытый элемент DOM, потому что он не требует выполнения кода JavaScript при загрузке страницы. Только, когда мне нужен contextPath, будете, я должен выполнить что-либо (в этом случае, выполнить запрос DOM).

61
задан 7 July 2011 в 22:56

0 ответов

Другие вопросы по тегам:

Похожие вопросы: