Source code

Revision control

Copy as Markdown

Other Tools

Test Info:

<head>
<title>Dynamic handling of attribute selectors</title>
<style type="text/css"><![CDATA[
[test] { background: red; display: block; padding: 1em; }
stub ~ [|attribute^=start]:not([|attribute~=mid])[|attribute*=dle][|attribute$=end] ~ t { background: lime; }
]]></style>
<link rel="author" title="Ian Hickson" href="mailto:ian@hixie.ch"/>
<link rel="help" href="https://www.w3.org/TR/css3-selectors/#selectors"/> <!-- bogus link to make sure it gets found -->
<meta name="flags" content=" dom namespace" />
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="common.js"></script>
</head>
<body>
<div>
<script><![CDATA[
promise_test(async t => {
await new Promise(r => requestAnimationFrame(r));
await new Promise(r => requestAnimationFrame(r));
document.getElementsByTagNameNS('', 't')[1].setAttributeNS('', 'attribute', 'start middle end');
assert_background_color('target', LIME);
}, 'Dynamic handling of attribute selectors');
]]></script>
<p> The following block should be green. </p>
<!-- root of selector -->
<stub xmlns=""></stub>
<!-- middle part of selector does not match this -->
<t xmlns="" attribute="fake"></t>
<!-- middle part of selector matches this once attribute is fixed -->
<t xmlns="" attribute="start mid dle end"></t>
<!-- subject of selector -->
<t xmlns="" test="test" id="target"></t>
</div>
</body>
</html>