1

我想知道,您是否知道在外部 javascript 文件中指定绝对 URL 的任何最佳做法?我正在寻找一个可维护的解决方案。

基本场景是当我需要在运行时通过 javascript 包含 css 文件,或者对某些 URL 进行 ajax 调用,以及通常需要在(外部)javascript 文件中指定 URL 的其他情况。

如果您要更改服务器,或者可能引入 mod_rewrite,如何防止手动编辑 js 文件中的所有 url?

4

3 回答 3

3

那么您可以使用以下属性构建一个 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(); ?>;

或者,您可以将属性存储在服务器上的文件中,该文件可由服务器端语言解析。

于 2009-02-18T09:29:05.430 回答
2

您可以引入 javasript 类,该类保留所有 URL。像这样的东西

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

然后在您的其他脚本文件中引用此类,并使用如下 URL:

alert (new urlContainer().searchServer);

因此,您的所有外部 URL 都将包含在一个文件中。您可以获得更多创意并使用 baseUrls 和连接,但这取决于您。

于 2009-02-18T09:48:51.590 回答
1

另一种(可能更简单)的解决方案可能是将您想要的 URL 存储到隐藏字段值中,然后使用客户端 Javascript 访问它。请注意,您的 Hidden 字段需要是 HtmlInputHidden 或 HiddenField 控件。(基本上,它需要具有runat="server"属性,以便可以在服务器端设置它的值。)

于 2009-02-18T09:51:52.677 回答