It seems that this is a known bug for IE6 and prettify.js has a workaround for it. Specifically it replaces the BR tags with '
'.
By modifying the check to allow for IE6 or 7 then the cut-and-paste will work correctly from IE7, but it will render with a newline followed by a space. By checking for IE7 and providing just a ' ' instead of a '
' it will continue to cut-and-paste and render correctly.
Add this code to prettify.js:
function _pr_isIE7() {
var isIE7 = navigator && navigator.userAgent &&
/MSIE 7./.test(navigator.userAgent);
_pr_isIE7 = function () { return isIE7; };
return isIE7;
}
and then modify the prettyPrint function as follows:
function prettyPrint(opt_whenDone) {
var isIE6 = _pr_isIE6();
+ var isIE7 = _pr_isIE7();
...
- if (isIE6 && cs.tagName === 'PRE') {
+ if ((isIE6 || isIE7) && cs.tagName === 'PRE') {
var lineBreaks = cs.getElementsByTagName('br');
+ var newline;
+ if (isIE6) {
+ newline = '
';
+ } else {
+ newline = '
';
+ }
for (var j = lineBreaks.length; --j >= 0;) {
var lineBreak = lineBreaks[j];
lineBreak.parentNode.replaceChild(
- document.createTextNode('
'), lineBreak);
+ document.createTextNode(newline), lineBreak);
}
You can see a working example here.
Note: I haven't tested the original workaround in IE6, so I'm guessing it renders without the space caused by the '
' that is seen in IE7, otherwise the fix is simpler.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…