2012-05-12 43 views
9

Tôi đang sử dụng Javascript để bật/stylesheets vô hiệu hóa bằng cách sử dụng sau đây:HTML "liên kết" (stylesheet) khuyết tật thuộc tính

document.styleSheets[0].disabled = true|false; 

này JS hoạt động tốt, tuy nhiên tôi muốn stylesheet được tắt theo mặc định. Trong khi tôi có thể sử dụng JS ở trên để vô hiệu hóa ngay lập tức biểu định kiểu khi trang tải, điều này rõ ràng sẽ không hoạt động đối với những người dùng đã tắt JavaScript.

Tôi đã cố gắng làm điều này:

<link rel="stylesheet" href="style.css" disabled /> 

Trong khi điều này sẽ vô hiệu hóa các stylesheet, JavaScript (hoặc ít nhất là phương pháp tôi đang sử dụng) không thể kích hoạt nó trở lại. Tôi cũng đã thử tất cả các biến thể này trên thuộc tính "bị vô hiệu hóa": disabled="disabled", disabled="true"disabled=true, nhưng chúng cũng tạo ra cùng một vấn đề - tôi không thể bật lại chúng bằng JavaScript.

Tóm lại, tôi cần một cách để bật/tắt biểu định kiểu bên ngoài bằng JavaScript, nhưng có biểu định kiểu đó bị tắt theo mặc định nhưng không dựa trên JavaScript.

Mọi trợ giúp sẽ được đánh giá cao. Cảm ơn.

N.B. Hiệu ứng này có thể đạt được bằng cách sử dụng hai bảng định kiểu, thứ hai ghi đè lên đầu tiên, do đó không cần thuộc tính "bị vô hiệu hóa". Tuy nhiên, rõ ràng là chỉ nên sử dụng một biểu định kiểu duy nhất nếu có thể, do đó câu hỏi của tôi ở trên.

Trả lời

11

Bạn có thể sử dụng phương pháp của JavaScript removeAttribute cho điều đó.

<html> 
    <head> 
     <link id="first_style" rel="stylesheet" href="#" disabled /> 

     <script type="text/javascript"> 
      window.onload = function() 
      { 
       document.getElementById('first_style').removeAttribute('disabled'); 
      } 
     </script> 
    </head> 
    <body> 
     <p>something</p> 
    </body> 
</html> 
+0

Cảm ơn- điều này là hoàn hảo. Không biết tại sao tôi không bao giờ nghĩ về điều này- có thể sử dụng removeAttribute để vô hiệu hóa và addAttribute để kích hoạt. – VettelS

+0

Rất hoan nghênh, thưa bạn. Vui mừng được phục vụ và .... chờ đợi ... VettelS, bạn là một fan hâm mộ đua xe? –

+0

Tất nhiên! Fan of the best =) – VettelS

1

Tôi nghĩ trong trường hợp này, bạn có thể phải dựa vào JavaScript.

Nếu bạn suy nghĩ nhiều hơn về các dòng phân phát tờ định kiểu nếu cần thiết thay vì tắt theo mặc định, bạn nên làm móng.

2

Tại sao không xoay chuyển vấn đề xung quanh: chỉ tải CSS nếu JavaScript được bật?

Taken từ this example, bạn có thể sử dụng một cái gì đó như:

var fileref=document.createElement("link") 
fileref.setAttribute("rel", "stylesheet") 
fileref.setAttribute("type", "text/css") 
fileref.setAttribute("href", filename) 
+0

Nếu tôi sử dụng điều này, JavaScript có cho phép tôi bật/tắt nó khi biểu định kiểu được tải không? – VettelS

+0

Nếu bạn có một cái nhìn vào liên kết được cung cấp, bạn sẽ thấy rằng nó cũng giải thích làm thế nào để loại bỏ một tập tin CSS thông qua JavaScript. –

Các vấn đề liên quan