2009-02-18 5 views
1

Мне было интересно, знаете ли вы о какой-либо лучшей практике для определения абсолютных URL-адресов во внешних файлах javascript? Я ищу подходящее решение.Веб-издание: Абсолютные URL-адреса во внешних JS-файлах?

Базовый сценарий: когда мне нужно включать файлы css во время выполнения через javascript или вызывать ajax-вызовы на некоторый URL-адрес и в других ситуациях, когда вам обычно нужно указывать URL-адреса внутри (внешних) файлов javascript.

Если вы хотите изменить сервер или ввести mod_rewrite, как вы можете вручную редактировать все URL-адреса в файлах js?

ответ

3

Ну вы могли бы создать строку URL, используя следующее свойство:

var thisurl = document.location.href; 

Это даст вам URL строку текущей страницы, и, надеюсь, вы можете разобрать его оттуда?

Или, если вы используете серверный язык (например, PHP), то вы можете получить строку URL, используя которые, which'd быстрее (this от копирования вставили отсюда, непроверенный мной):

<?php 
function curPageURL() { 
$pageURL = 'http'; 
if ($_SERVER["HTTPS"] == "on") {$pageURL .= "s";} 
$pageURL .= "://"; 
if ($_SERVER["SERVER_PORT"] != "80") { 
    $pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"]; 
} else { 
    $pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"]; 
} 
return $pageURL; 
} 
?> 
var thisurl = <?php echo curPageURL(); ?>; 

ИЛИ вы можете сохранить это свойство в файле на сервере, который может быть проанализирован на серверном языке.

+0

Я в значительной степени делаю эквивалент в .NET. Помогло бы, если бы OP сообщила нам серверную платформу. – Craig

2

Вы можете ввести класс javasript, который хранит все URL-адреса. Что-то вроде этого

function urlContainer(){ 
    this.searchServer = 'http://search.example.com'; 
    this.submitServer = 'http://submit.example.com'; 
} 

Затем ссылки на этот класс в других ваших файлов сценариев, а также использовать URL-адреса, как:

alert (new urlContainer().searchServer); 

Таким образом, все ваши внешние URL-адреса будут containted в одном файле. Вы можете получить более креативные и использовать baseUrls и конкатенации, но это зависит от вас.

+0

Хорошее решение, предполагая, что все возможные URL-адреса сервера известны заранее. – Cerebrus

+0

При необходимости можно генерировать этот файл динамически. – PiRX

+0

Действительно, это похоже на мой третий вариант, но вам нужно знать/разбирать Javascript, чтобы его обновить :) –

1

Альтернативным (и, возможно, более простым) решением может быть просто сохранить URL-адрес, который вы хотите, в значение скрытого поля и, следовательно, получить к нему доступ с помощью Javascript на стороне клиента. Обратите внимание, что ваше скрытое поле должно быть либо HtmlInputHidden, либо элементом управления HiddenField. (В принципе, он должен иметь атрибут runat="server", чтобы его значение можно было установить на стороне сервера.)