2009-02-18 56 views
1

我在想,你是否知道在外部JavaScript文件中指定絕對URL的最佳做法?我正在尋找一個可維護的解決方案。網站製作:外部JS文件中的絕對網址?

基本場景是當我需要在運行時通過javascript包含css文件,或者對某個URL進行ajax調用,以及其他通常需要在(外部)javascript文件中指定URL的情況。

如果您要更改服務器,或者引入mod_rewrite,您如何防止手動編輯js文件中的所有url?

回答

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 2009-02-18 09:38:55

2

您可以介紹javasript類,它保留所有的URL。這樣

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

東西然後引用這個類在其他腳本文件,並使用網址,如:

alert (new urlContainer().searchServer); 

所以所有的外部URL就會在一個文件中containted。您可以獲得更多創意並使用baseUrls和連接,但這取決於您。

+0

好的解決方案,假設事先知道所有可能的服務器URL。 – Cerebrus 2009-02-18 09:53:53

1

一種替代(也可能更簡單)的解決方案可能是簡單地將你想要的URL存儲到一個隱藏的字段值,並因此使用客戶端JavaScript訪問它。請注意,您的隱藏字段將需要是HtmlInputHidden或HiddenField控件。 (基本上,它需要具有runat="server"屬性,以便它的值可以在服務器端進行設置。)