Клонирование стиля CSS из таблицы стилей с помощью jquery / greasemonkey - PullRequest
1 голос
/ 18 ноября 2009

Я пишу сценарий Greasemonkey, используя jquery, и хочу добавить информацию с нескольких страниц, но объект, который я хочу загрузить, - это div с Id, есть ли способ получить информацию о стиле, чтобы я мог можно применить его к добавленным разделам?

1 Ответ

1 голос
/ 18 ноября 2009

Взгляните на getComputedStyle ()

Это не проверено, но код будет выглядеть примерно так:

var someOtherElement = document.getElementById('blah');
var style = window.getComputedStyle(document.getElementById('myId'), '');
for (var i in style) {
    if (style.hasOwnProperty(i)) {
        someOtherElement.style[i] = style[i];
    }
}

Это будет работать только (ну, это , вероятно, вообще не будет работать, но основная идея этого будет работать только) с Firefox, но так как вы сказали, что используете greasemonkey, я предполагаю это тебя не касается.


Я думаю, что мой мозг не работает должным образом этим утром - но в любом случае, вот кое-что, что работает, но хитроумно. Просмотрите стили элемента, который вы копируете, с на .

var s = window.getComputedStyle(document.getElementById('myElement'), null);
var someOtherElement = document.getElementById('someOther');

for (var i in someOtherElement.style) {
    try {
        someOtherElement.style[i] = s[i];
    } catch (e) { }
}

Как я уже сказал, мой мозг не работает, а вышесказанное изворотливо. Объект style имеет свойства length и parentRule, которые доступны только для чтения, что делает его умирающим, следовательно, try / catch.

...