if (document.implementation &&
document.implementation.hasFeature ('HTML', '2.0') &&
document.implementation.hasFeature ('StylsSheets', '2.0') &&
) {
var element = document.getElementsByTagname ('head')[0]
.appendChild (document.createElement ('link'));
element.rel = 'stylesheet';
element.type = 'text/css';
element.href = 'data:text/css,td{border-collapse:collapse;}';
}if (document.implementation &&
document.implementation.hasFeature ('HTML', '2.0') &&
document.implementation.hasFeature ('StylsSheets', '2.0') &&
document.implementation.hasFeature ('CSS', '2.0')
) {
var element = document.getElementsByTagname ('head')[0]
.appendChild (document.createElement ('style'));
element.type = 'text/css';
element.sheet.insertRule ('td { border-collapse: collapse; }', 0);
}if (typeof document.createStyleSheet != 'undefined') {
document.createStyleSheet ()
.addRule ('td', 'border-collapse: collapse', 0);
}if (document.implementation &&
document.implementation.hasFeature ('XML', '2.0')
) {
document.insertBefore (
document.createProcessingInstruction (
'xml-stylesheet',
'type="text/css" href="data:text/css,td{border-collapse:collapse;}"'
),
document.documentElement
);
}<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<title>TEST</title>
<style type="text/css">
table { border-collapse: collapse; }
table, tr, td { border: 1px solid #999; }
</style>
<!-- rowspan="4" のセルが存在し、かつレイアウト計測すると確実に発生 -->
<table>
<tbody>
<tr><td rowspan="4">td[@rowspan="4"]</td><td>text</td><td>text</td><td>text</td></tr>
<tr><td>text</td><td>text</td><td>text</td></tr>
<tr><td>text</td><td>text</td><td>text
<script type="application/javascript">document.body.offsetHeight</script></td></tr>
<tr><td>text</td><td>text</td><td>text</td></tr>
</tbody>
</table>
<script type="application/javascript; version=1.5">
// 一旦 table { border-collapse: separate; } を与え、すぐ削除
if (document.implementation &&
document.implementation.hasFeature ('HTML', '2.0') &&
document.implementation.hasFeature ('StyleSheets', '2.0') &&
document.implementation.hasFeature ('CSS', '2.0')
) {
var element = document.getElementsByTagName ('head')[0]
.appendChild (document.createElement ('style'));
element.type = 'text/css';
element.sheet.insertRule ('table { border-collapse: separate; }', 0);
element.parentNode.removeChild (element);
}
</script>