Изменение HEAD перед загрузкой BODY
У меня есть js файл который я подключаю к опере.
Eсть страница с некоторым <head>.....</head> Мне нужно чтобы скрипт стер все ссылки на css и написал свою, после уже загружался body с тем css который написал js файл... Тоесть убирать на сайте все его css и применять мой css |
Я пробывал так, но ничегон е получилось
document.head.onload = function () {vcsss()} function vcsss() { document.head="<link rel='stylesheet' href='http://........./vk1.css' type='text/css' />" } |
Цитата:
Идея ваша бредовая... Можно удалить все link и пристегнуть свой, но это будет происходить в процессе загрузки body, поэтому при медленном нете у тебя будут частые перерисовки страницы и это будет напрягать... |
Цитата:
|
Код чего?! Удаления линков или добавления своего?!
|
Удаления линков и наверное дописывание своего (Надо как я понял через innerHTML) но как дописать в head??
|
document.documentElement.getElementsByTagName('LINK') так можно получить все линки на css и удалить их (removeChild). document.documentElement.getElementsByTagName('HEAD')[0] так можно получить head. В этот head вставляем (appendChild) свой link (document.createElement('link')). Ещё вопросы?! |
document.documentElement.getElementsByTagName('LINK').removeChild document.documentElement.getElementsByTagName('HEAD')[0].document.createElement('link') Если честно я суть то понял, но как это сделать я не понял... И еще 1 link создам а как в ему указать путь к новому css?? |
var head = document.getElementsByTagName("head")[0]; // удаление старой иконки var links = head.getElementsByTagName("link"); for (var i = 0; i < links.length; i++) { var lnk = links[i]; if (lnk.rel=="stylesheet") { head.removeChild(lnk); return; } } // создание и добавление новой иконки var link = document.createElement("link"); link.setAttribute("href",""); link.setAttribute("rel","stylesheet"); head.appendChild(link); Я тут немного поискал, нашел пример со сменой иконки, немного переписал, поменял все ненужное на свое нужное, вот что получилось... |
document.body.onload = function() {mlia()}; fumction mlia() { var head = document.getElementsByTagName("head")[0]; var links = head.getElementsByTagName("link"); for (var i = 0; i < links.length; i++) { var lnk = links[i]; if (lnk.rel=="stylesheet") { head.removeChild(lnk); return; } } var link = document.createElement("link"); link.setAttribute("href","http://........./vk1.css"); link.setAttribute("rel","stylesheet"); head.appendChild(link); } Короче вот код, но не работает... =(( В чем может быть проблема?? |
Цитата:
document.documentElement.getElementsByTagName('HEAD')[0]. Дальше. Вместо setAttribute используй свойства узлов: link.href - путь, link.rel - тип. Советую почитать документацию DOM. |
На будущее:
свойство документа (document) documentElement указывает на корень этого документа - html. В нём и надо искать head, а в нём уже и ссылки на стили. Ещё могут быть линки и в body. Там их можно найти в document.body. |
Цитата:
Temchik, вы break с return не перепутали? |
document круче чем html, html в нем находится. Раньше я этого не знал и вот эта функция:
parent: function(self, nodeName) { if (self) { if (nodeName) { nodeName = nodeName.toLowerCase(); while ((self = self.parentNode) && self.nodeName.toLowerCase() != nodeName); return $(self); } return $(self.parentNode); } } только написанная через tagName, а не через nodeName, в определенных ситуациях вызывала ошибку. |
Riim, я из твоей функции ничего не понял, можно на чистом JS?!
Octane, document - это документ и он не обязан указывать на своих детей. Есть свойство документа: documentElement - корень документа, от которого и нужно отталкиваться в поиске. |
B~Vladi, для чего тогда у document есть getElementsByTagName и другие методы для поиска элементов?
|
Цитата:
PS: document это не <HTML>... |
Ага. Ну чтобы не фантазировать, что кому должен, и какая реализация, что решает, полезли в W3C читать доки:
Цитата:
Цитата:
Цитата:
Так почему надо искать <head> с помощью document.documentElement.getElementsByTagName("hea d"), а не document.getElementsByTagName("head")? |
Цитата:
|
И еще вот:
alert(document.childNodes[0].nodeName) |
Riim, аха, разобрался.
Octane, это документ, так?! document.documentElement - корень документа, так?! ele.getElementsByTagName - ищет узлы с указанным именем в контексте элемента. Так какого хера тут вмешан document?! Я не против того чтобы у документа был этот замечательный метод, но разве не надо искать в контексте DOM-узла? ИМХО у документа этот метод лишний... |
Octane, повторяю - document != html.
Разницу чувствуешь? |
Цитата:
|
Цитата:
Цитата:
alert(document.nodeName); В стандарте методы присутствуют, то что тебе это не нравится — твои личные предпочтения, я ничего нелогичного или неправильного в этом не вижу. |
Цитата:
Покопавшись - увидел, что document: nodeType==9, т.е. это нода... Что на счёт реализаций?! Всё хорошо?! |
Цитата:
А tagName у него нет, скорее всего, потому что от HTMLElement ничего не наследует: alert(Node.prototype.setAttribute); alert(HTMLElement.prototype.setAttribute) |
Несовсем ясно. Откуда взялось Node и HTMLElement?!
Насчёт html - у узлов нет прототипа (в некоторых реализациях). |
Цитата:
Тоесть я вижу весь процес... Грузиться страница, убираються все стили, страница ержиться... ПОтом применяеться мой стиль но прямо на сьерженую страницу, страница не выравниваеться... Как быть?? |
Я тебя предупреждал... Это корявый метод... Уверен, есть другие, правильные решения.
Может опишешь ситуацию более глобально?! |
Млин... Может ктонить знает какие??
|
Цитата:
alert(Element.prototype.getElementsByTagName === HTMLElement.prototype.getElementsByTagName); |
Temchik, может ты всё-таки скажешь, что тебе надо?!
|
Octane, с интерфейсами всё понятно... откуда у window они взялись?
|
Млять... Сохраните в файлик js этот код
document.body.onload = function() {mlia()}; fumction mlia() { var head = document.getElementsByTagName("head")[0]; var links = head.getElementsByTagName("link"); for (var i = 0; i < links.length; i++) { var lnk = links[i]; if (lnk.rel=="stylesheet") { head.removeChild(lnk); return; } } var link = document.createElement("link"); link.setAttribute("href","http://tmoney.at.ua/vk1.css"); link.setAttribute("rel","stylesheet"); head.appendChild(link); И подкючите файл к опере на сайте контакта.... И посматрите результат... Как такое исправить?? |
Цитата:
В пень иди... Не буду помогать... |
Цитата:
|
Цитата:
|
Цитата:
Цитата:
|
Цитата:
|
Цитата:
|
Часовой пояс GMT +3, время: 22:31. |