2011-04-07 30 views
0

我正在SharePoint服務器上構建一個網站,該服務器具有無法訪問或刪除的特定CSS文件。 jQuery可以在呈現之前從DOM中刪除這些樣式表嗎?或者我可以指定頁面上的某些元素只遵守特定的CSS樣式,而不需要渲染其他文件?如何停止使用jQuery呈現CSS文件?

回答

2

是否有一個原因,你想使用純JQuery的JQuery?

您可以使用此Javascript來替換外部樣式表。

function createjscssfile(filename, filetype){ 
if (filetype=="js"){ //if filename is a external JavaScript file 
    var fileref=document.createElement('script') 
    fileref.setAttribute("type","text/javascript") 
    fileref.setAttribute("src", filename) 
} 
else if (filetype=="css"){ //if filename is an external CSS file 
    var fileref=document.createElement("link") 
    fileref.setAttribute("rel", "stylesheet") 
    fileref.setAttribute("type", "text/css") 
    fileref.setAttribute("href", filename) 
} 
return fileref 
} 

function replacejscssfile(oldfilename, newfilename, filetype){ 
var targetelement=(filetype=="js")? "script" : (filetype=="css")? "link" : "none" //determine element type to create nodelist using 
var targetattr=(filetype=="js")? "src" : (filetype=="css")? "href" : "none" //determine corresponding attribute to test for 
var allsuspects=document.getElementsByTagName(targetelement) 
for (var i=allsuspects.length; i>=0; i--){ //search backwards within nodelist for matching elements to remove 
    if (allsuspects[i] && allsuspects[i].getAttribute(targetattr)!=null && allsuspects[i].getAttribute(targetattr).indexOf(oldfilename)!=-1){ 
    var newelement=createjscssfile(newfilename, filetype) 
    allsuspects[i].parentNode.replaceChild(newelement, allsuspects[i]) 
    } 
} 
} 

replacejscssfile("oldscript.js", "newscript.js", "js") //Replace all occurences of "oldscript.js" with "newscript.js" 
replacejscssfile("oldstyle.css", "newstyle", "css") //Replace all occurences "oldstyle.css" with "newstyle.css" 

瞭解更多關於this page

1

此代碼禁用了Firebug控制檯中的stackoverflow樣式表。

var href = "http://sstatic.net/stackoverflow/all.css?v=84b08398d3dc"; 
jQuery('link[rel=stylesheet][href="' + href + '"]').get(0).disabled = true 

與所有的JavaScript一樣,它可以在沒有jQuery的情況下完成。而且我假設,當禁用樣式表的明顯方式是刪除HTML中的引用時,您有充分的理由訴諸JavaScript解決方案。

(從this post改編,它展示瞭如何使用jQuery來切換樣式表。)

0

你提到的沒有獲得從SharePoint取出CSS文件...

這是否意味着你沒有對主頁面文件的訪問權限?我建議儘可能在使用jQuery解決方法之前編輯主頁面。

如果您可以訪問主頁面,您可以刪除對Sharepoint特定CSS文件的引用。

SharePoint設計

  • _catalogs
    • 母版(主頁庫)
      • [YourMasterPageFile]

除去弗洛翼從<head>

<Sharepoint:CssLink runat="server"/>