Интернет-производство: Абсолютные URL-адреса во внешних файлах JS? - PullRequest
1 голос
/ 18 февраля 2009

Мне было интересно, знаете ли вы какие-либо рекомендации по указанию абсолютных URL-адресов во внешних файлах JavaScript? Я ищу ремонтопригодное решение.

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

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

Ответы [ 3 ]

3 голосов
/ 18 февраля 2009

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

var thisurl = document.location.href;

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

Или, если вы используете серверный язык (например, PHP), вы можете получить строку URL-адреса, используя ее, что будет быстрее ( этот вставляется здесь с помощью копирования; я):

<?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(); ?>;

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

2 голосов
/ 18 февраля 2009

Вы можете ввести класс javasript, который хранит все URL. Как то так

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

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

alert (new urlContainer().searchServer);

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

1 голос
/ 18 февраля 2009

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

...