Web制作:外部JS文件中的绝对URL?

时间:2009-02-18 09:13:21

标签: javascript workflow maintenance production

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

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

如果你要更改服务器,或者介绍mod_rewrite,你如何防止手动编辑js文件中的所有网址?

3 个答案:

答案 0 :(得分:3)

您可以使用以下属性构建URL字符串:

var thisurl = document.location.href;

那将为您提供当前页面的URL字符串,希望您可以从那里解析它?

或者,如果您使用的是服务器端语言(例如PHP),那么您可以使用它来获取URL字符串,速度更快(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(); ?>;

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

答案 1 :(得分:2)

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

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

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

alert (new urlContainer().searchServer);

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

答案 2 :(得分:1)

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