2014-07-22 48 views
-2

我有一個網頁,需要重新加載每15分鐘,但不會失敗,當連接斷開。所以我有一個jQuery的功能,每15分鐘取代一次body。jquery,重新加載整個嵌入式CSS樣式表

<script type="text/javascript"> 
    function update_site() { 
    $.ajax({ 
     url: "{{ settings['url'] }}", 
     dataType: "html", 
     cache: false, 
     success: function(data) { 
      // Replace body with loaded site. You can do more checks here to check 
      // if the fetched content is all there. 
      var body_html = data.replace(/^[\S\s]*<body[^>]*?>/i, "") 
        .replace(/<\/body[\S\s]*$/i, ""); 
      $('body').html(body_html); 
      $('div.last_connect').css({"background-color": "green"}); 
     }, 
     error: function(data) { 
      $('div.last_connect').css({"background-color": "red"}); 
     } 
    }); 
} 
</script> 

這個工程,但我的CSS也可以完全改變。有沒有一種方法可以完全替代嵌入式樣式表,方式與替換身體相似?

我可以把我的樣式表放入正文中,但這會違反標準。

+0

請參閱http://stackoverflow.com/questions/2126238/can-i-load-external-stylesheets-on-request – Jason

+0

我無法加載外部樣式表。 – RG337

+0

那麼你想從頭部替換內聯樣式呢? – Jason

回答

-1

您可以使用Javascript將樣式直接注入到頭部。

function injectStyles(rule) { 
    var div = $("<div />", { 
    html: '&shy;<style>' + rule + '</style>' 
    }).appendTo("body");  
} 

injectStyles('a:hover { color: red; }'); 

http://css-tricks.com/snippets/javascript/inject-new-css-rules/

您也可以注射之前刪除以前的風格標籤。如果我記得,注入CSS可能會在舊版Internet Explorer中觸發(小於9),因此請務必在那裏測試它。雖然這應該起作用,但你可能想重新考慮你的方法;我認爲使用樣式表可能會有更好的方法。