2016-04-25 82 views
1

我有一個HTML網頁,擁有像這些的一些腳本參考:如何在HTML頁面上動態添加路由到腳本src?

<script charset="utf-8" src="Content/Styles/ThemeForest/assets/js/vendors.js"></script> 
<script charset="utf-8" src="Content/Styles/ThemeForest/assets/js/app.js"></script> 

的問題是,當我上傳我的網站服務器,它不再工作。 我想如果我改爲添加Web應用程序名稱,它將再次工作。事情是這樣的:現在

<script charset="utf-8" src="MySite/Content/Styles/ThemeForest/assets/js/vendors.js"></script> 
<script charset="utf-8" src="MySite/CContent/Styles/ThemeForest/assets/js/app.js"></script> 

的事情是,我可能不知道Web應用程序的名稱將是怎麼樣的,一旦它被上傳到服務器...所以,我想動態添加應用程序名稱到src。

我注意到有一個名爲window.location.pathname的JavaScript函數,它可以爲我帶來Web應用程序的名稱(如果有的話)。我可以將它連接到路線的其餘部分,它應該可以工作。

現在,問題是,這是全部在一個普通的HTML頁面上。 有沒有一種方法可以使用基本的JavaScript函數爲這些腳本標記設置自定義路由?還是其他想法?

+0

你可以嘗試使用? –

+0

聽起來像根相對路徑可能工作,像'/ Content/Styles/ThemeForest/assets/js/vendors.js'。有沒有什麼理由不能簡單地使用根相對路徑? –

回答

0

你可以使用類似$script的東西,只需在你的app.run或任何其他地方添加代碼行,並用你想要加載的js文件的路由數組來調用它。你說,你能得到的Web應用程序的名稱,所以只通過與腳本的路徑連接在一起的應用程序的名稱:

var dependenciesLoadingFactory = function(deps) { 
    return ['$q', '$rootScope', function($q, $rootScope) { 
     var deferred = $q.defer(); 
     $script(deps, function() { 
      $rootScope.$apply(function() { deferred.resolve(); }); 
     }); 
     return deferred.promise; 
    }]; 
}; 
-1

如果您鏈接到源文件開頭的目錄或文件名本身(就像你在你的問題中所做的那樣),查找將從與你當前文件(這將是保存你的腳本標籤的html文件)相同的文件夾開始尋找。 你也可以鏈接到相對父目錄中的文件到您目前的位置,如下所示:

../file.js 

您可以選擇鏈接到以sl開頭的路徑灰:

/dir/to/your/file.js 

這將開始尋找您的網頁的根目錄,這意味着您的域或子域指向的目錄。您無法成功鏈接到根目錄之上的文件。

最後,如果你的文件在另一臺服務器上,確保包含完整的路徑包括http://片段:

http://example.website.com/dir/file.js 

在正常情況下,應該確實沒有理由這些偏離方法,但是如果你絕對要動態地設置一個目錄,我建議你使用PHP的,因爲它的服務器端,並因此更快地爲用戶和可用的,如果他們已禁用JavaScript(如果您鏈接到其他文件,如風格,是非常重要的以這種方式張):

<?php $directory = '/dir/'; ?> 
<script src="<?php print $directory; ?>file.js"></script> 

當然,爲了這個工作,你的服務器必須運行php。

+0

我想反饋爲什麼這篇文章被低估。該問題的作者在他們原來的帖子中提出了非javascript的想法。 – TheThirdMan