2015-01-12 79 views

回答

2

通過簡單的腳本,您可以使用此代碼,

<script> 
    var allElements = document.childNodes; 
    for (var i = 0; i < allElements.length; i++) 
    { 
     var currElement = allElements[i]; 
     if (currElement.hasAttribute("background")) 
     { 
      currElement.removeAttribute("background"); 
     } 
    } 
    </script> 


and to solve your mentioned issue, 
use this, 

use this to solve this issue, 
`<script> 
     function removeBackground(cElement) { 
      var allElements = cElement.childNodes; 
      if (allElements.length > 0) { 
       for (var i = 0; i < allElements.length; i++) { 
        var currElement = allElements[i]; 
        if (currElement.childNodes.length > 0) { 
         removeBackground(currElement); 
        } 
        if (currElement.hasAttribute("background")) { 
         currElement.removeAttribute("background"); 
        } 
       } 
      } 
     } 
    removeBackground(document); 
    </script>` 
+1

'document.childNodes'似乎比'document.querySelectorAll(*)更快;'http://jsperf.com/childnodes-vs-queryselectorall – Kaiido

+1

有一個小問題,它比遇到像:

text

levkaster

+1

是的,因爲'document.childNodes'是一個屬性存根,而'document.querySelectorAll(*);'是一個函數存根,執行,這就是爲什麼屬性存根總是比別人快, –

0

使用jQuery你可以使用一個簡單的選擇爲:

$("*").css('background', 'transparent');

背景屬性而不是風格:

$("*").removeAttr('background');

沒有jQuery的這是一個有點更多的工作要做:

var elements = document.getElementsByTagName("*"); 

for (var i = 0, i < elements.length; i++) { 
    elements[i].style.background = "transparent"; 
} 

原始背景屬性:

var elements = document.getElementsByTagName("*"); 

for (var i = 0, i < elements.length; i++) { 
    if (elements[i].hasAttribute("background")) { 
     elements[i].removeAttribute("background"); 
    } 
} 
+0

我寧願去除背景。添加透明值將覆蓋主要的CSS設置。 – levkaster

+0

看到上面的編輯 – Tyr

1

$(document).ready(function(){ 
 
\t $('*').removeAttr('background'); 
 
});
<!DOCTYPE html> 
 
<html> 
 
<body background="https://www.google.co.in/images/srpr/logo11w.png"> 
 

 
<h1>Hello world!</h1> 
 
<p>The background attribute is not supported HTML5. Use CSS instead.</p> 
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
</body> 
 
</html>

您可以使用jQuery刪除所有的背景屬性一樣,

$('*').removeAttr("background"); 
+0

你沒看過你的代碼片段,對吧? 「背景」不支持在HTML5 – jbutler483

+0

是的,它不贊成 –

+0

@jbutler,但如果你看到這個問題,似乎這是OP想要刪除 – Kaiido

0

你可以添加自定義的紙張覆蓋背景屬性 這樣

var style = document.createElement('style'); 
document.head.appendChild(style); 

// Depend on browser implementation 
if (style.sheet.insertRule) { 
    style.sheet.insertRule("* { background:none !important }", 0); 
} 
else if (style.sheet.addRule) { 
    style.sheet.addRule("*","background:none !important", 0); 
}