Как остановить CSS-файл от рендеринга с помощью jQuery? - PullRequest
0 голосов
/ 07 апреля 2011

Я создаю веб-сайт на сервере Sharepoint, на котором есть определенные файлы рендеринга CSS, к которым я не могу получить доступ или удалить.Возможно ли с помощью jQuery удалить эти таблицы стилей из DOM перед рендерингом?или я могу указать определенные элементы на странице, чтобы они придерживались только определенных стилей CSS, не отображая другие из этого файла?

Ответы [ 3 ]

2 голосов
/ 07 апреля 2011

Есть ли причина, по которой вы хотите использовать JQuery вместо обычного Javascript?

Вы можете использовать этот 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"

Подробнее на этой странице.

1 голос
/ 07 апреля 2011

Этот код отключил таблицу стилей stackoverflow в консоли Firebug.

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

Как и для любого javascript, это можно сделать без jQuery.И я предполагаю, что у вас есть веская причина прибегнуть к решению javascript, когда очевидным способом отключения таблицы стилей является удаление ссылки в HTML.

(Адаптировано из этого поста , который показывает, как переключать таблицы стилей с помощью jQuery.)

0 голосов
/ 07 апреля 2011

Вы упомянули, что у вас нет доступа к удалению CSS-файлов из SharePoint ...

Означает ли это, что у вас нет прав доступа к файлу Masterpage? Я бы рекомендовал попытаться отредактировать мастер-страницу, если это вообще возможно, перед использованием обходного пути jQuery.

Если вы можете получить доступ к главной странице, вы можете удалить там ссылки на определенные CSS-файлы Sharepoint.

в Sharepoint Designer

  • _catalogs
    • masterpage (Галерея мастер-страниц)
      • [YourMasterPageFile]

удалить из <head> следующее:

<Sharepoint:CssLink runat="server"/>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...