Ах, хорошо. Вы можете написать новый CSS, который сбрасывает ложные элементы :before
/ :after
:
function resetPsuedo(el) {
if (!el.id) el.id = makeId();
var selector = "#" + el.id;
var head = document.getElementsByTagName('head')[0],
style = document.createElement('style'),
rules = document.createTextNode(selector + ":before, " + selector + ":after { content: '' }");
style.type = 'text/css';
if(style.styleSheet)
style.styleSheet.cssText = rules.nodeValue;
else style.appendChild(rules);
head.appendChild(style);
}
function makeId() {
var text = "";
var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
for (var i=0; i < 15; i++)
text += possible.charAt(Math.floor(Math.random() * possible.length));
return text;
}
Назначение случайного идентификатора передаваемому элементу (если у него его нет) позволяет взламывать встроенные стили - вместо доступа к el.beforeStyle
вы можете использовать селекторы CSS: el#rkhjr828t9g:before
.
Возможно, вам придется добавить дополнительные правила, чтобы полностью сбросить стили. jsFiddle: посмотреть меня!
http://www.w3.org/TR/CSS21/generate.html#before-after-content
Псевдоэлементы: before и: after взаимодействуют с другими блоками как
если бы они были настоящими элементами, вставленными только внутри
элемент. * +1021 *
Например, следующий фрагмент документа и таблица стилей:
<p> Text </p> p:before { display: block; content: 'Some'; }
... будет отображаться точно так же, как следующий документ
фрагмент и таблица стилей:
<p><span>Some</span> Text </p> span { display: block }
Аналогично, следующий фрагмент документа и таблица стилей:
<h2> Header </h2> h2:after { display: block; content: 'Thing'; }
... будет отображаться точно так же, как следующий документ
фрагмент и таблица стилей:
<h2> Header <span>Thing</span></h2> h2 { display: block; }
span { display: block; }