2009-10-21 24 views
1

我想知道是否有辦法(使用JavaScript或jQuery)通過整個HTML文件替換對外部文件的所有引用,並用同一個命名文件替換其他目錄中的文件的所有引用,但沒有目錄信息。用平面目錄引用替換對外部文件(圖像,CSS和JavaScript)的所有引用?

例如,在HTML文本:

  • scripts/script.js獲取與script.js
  • images/big.jpg代替獲取與big.jpg
  • css/style.css替換style.css

被替換10

我猜CSS文件中的引用也需要改變。

+2

爲什麼?爲什麼在JavaScript中? – 2009-10-21 20:47:42

+0

,因爲我想在本地保存html,並且能夠在沒有連接的情況下正確查看頁面。創建相同的目錄結構(特別是如果外部文件位於不同的域中)是站不住腳的,所以我需要「扁平化」目錄結構。 – cannyboy 2009-10-21 20:54:10

+5

我知道,至少在Firefox中,你可以做文件 - >保存頁面,然後選擇「另存爲類型:網頁,完成」,Firefox將下載本地的所有js/css/img文件並更新HTML文檔您。否則,JavaScript不是這樣做的正確方法。 – Tinister 2009-10-21 21:24:37

回答

1

下面的代碼非常混亂,它會很整潔,但我希望你能解決你需要的東西。

<html> 
<head> 
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js" type="text/javascript"></script> 
<script language="JavaScript"> 

$(function(){ 

    $("*", $("#container")).each(function() 
    { 
     try 
     { 
      //src 
      if ($(this).attr("src")) 
       if ($(this).attr("src").lastIndexOf("/")!=-1) 
        $(this).attr("src", $(this).attr("src").substr($(this).attr("src").lastIndexOf("/")+1)); 

      //href 
      if ($(this).attr("href")) 
       if ($(this).attr("rel")) 
        if ($(this).attr("rel")=="stylesheet") 
         if ($(this).attr("href").lastIndexOf("/")!=-1) 
          $(this).attr("href", $(this).attr("href").substr($(this).attr("href").lastIndexOf("/")+1)); 
     } 
     catch(ex) 
     { 
      $("#lstError").append("<div>"+ex.description+"</div>"); 
     } 
    }); 

}); 

</script> 
</head> 
<body> 

    <div id="lstError"></div> 

    <div id="container"> 
     <!-- your html --> 
     <link rel="stylesheet" href="pepe/all.css"> 
     <img src="lele/bl.png" /> 
     <img src="lele/b.png" /> 
    </div> 

</body> 
</html> 
+0

偉大的thanks.i會嘗試使用它 – cannyboy 2009-10-21 22:01:44

+0

你不會仍然需要手動下載所有的CSS/JS /圖像文件? – moxn 2009-10-22 06:56:11

+0

這只是一種方法來做你需要@cannyboy。 保險不是一個好的做法,因爲它會產生很多404錯誤。 – 2009-10-22 11:26:17

1

瀏覽器的作品另請將頁面保存爲...

相關問題