2011-04-07 49 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"/>