2009-10-21 4 views
1

Я пытаюсь выяснить, есть ли способ (с использованием JavaScript или jQuery), чтобы просмотреть весь HTML-файл, заменив все ссылки на внешние файлы и заменив все ссылки на файлы в других каталогах с тем же именем файла, но без справочной информации.Заменить все ссылки на внешние файлы (изображения, CSS и JavaScript) с помощью ссылок на плоские каталоги?

Например, в HTML тексте:

  • scripts/script.js заменяется script.js
  • images/big.jpg заменяется big.jpg
  • css/style.css заменяется style.css

т.д.

Я думаю, что ссылки в CSS-файлах тоже нуждаются в изменении.

+2

Почему? И почему в JavaScript? –

+0

потому что я хочу сохранить html локально, а не иметь возможность правильно просматривать страницу без подключения. создание той же структуры каталогов (особенно если внешние файлы находятся в другом домене) несостоятельно, поэтому мне нужно «сгладить» структуру каталогов. – cannyboy

+5

Я знаю, что, по крайней мере, Firefox, вы можете сделать File -> Save Page As, а затем выбрать «Сохранить как тип: веб-страница, полный», и Firefox будет загружать все файлы js/css/img локально и обновлять HTML-документ для вы. В противном случае JavaScript не подходит для этого. – Tinister

ответ

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

большое спасибо.i попытается использовать его – cannyboy

+0

Вам все равно придется вручную загружать все файлы css/js/image ??? – moxn

+0

Это всего лишь один из способов сделать то, что вам нужно @cannyboy. Страхование не является хорошей практикой, потому что оно генерирует много ошибок 404. –

Смежные вопросы