gpt4 book ai didi

html - 为什么 IE7 不能正确地将
 block 复制到剪贴板?

转载 作者:技术小花猫 更新时间:2023-10-29 11:39:21 24 4
gpt4 key购买 nike

我们注意到 IE7 对 Stack Overflow 上发布的代码块有一种奇怪的行为。例如,这个小代码块:

public PageSizer(string href, int index)
{
HRef = href;
PageIndex = index;
}

从IE7复制粘贴,结果如下:

public PageSizer(string href, int index){    HRef = href;    PageIndex = index;    }

Not exactly what we had in mind.. the underlying HTML source actually looks fine; if you View Source, you'll see this:

<pre><code>public PageSizer(string href, int index)
{
HRef = href;
PageIndex = index;
}
</code></pre>

那么我们做错了什么?为什么 IE7 不能以合理的方式复制和粘贴此 HTML?

Update: this specifically has to do with <pre> <code> blocks that are being modified at runtime via JavaScript. The native HTML does render and copy correctly; it's the JavaScript modified version of that HTML which doesn't behave as expected. Note that copying and pasting into WordPad or Word works because IE is putting different content in the rich text clipboard compared to the plain text clipboard that Notepad gets its data from.

最佳答案

这似乎是 IE6 的一个已知错误,prettify.js 有一个解决方法。具体来说,它将 BR 标签替换为“\r\n”。

通过修改检查以允许 IE6 或 7,然后剪切和粘贴将在 IE7 中正常工作,但它会呈现一个换行符后跟一个空格。通过检查 IE7 并仅提供“\r”而不是“\r\n”,它将继续剪切和粘贴并正确呈现。

将此代码添加到 prettify.js:

function _pr_isIE7() {
var isIE7 = navigator && navigator.userAgent &&
/\bMSIE 7\./.test(navigator.userAgent);
_pr_isIE7 = function () { return isIE7; };
return isIE7;
}

然后修改prettyPrint函数如下:

   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 = '\r\n';
+ } else {
+ newline = '\r';
+ }
for (var j = lineBreaks.length; --j >= 0;) {
var lineBreak = lineBreaks[j];
lineBreak.parentNode.replaceChild(
- document.createTextNode('\r\n'), lineBreak);
+ document.createTextNode(newline), lineBreak);
}

你可以看到一个working example here .

注意:我还没有在 IE6 中测试原来的解决方法,所以我猜它在渲染时没有出现由 IE7 中的“\n”引起的空格,否则修复方法是更简单。

关于html - 为什么 IE7 不能正确地将 <pre><code> block 复制到剪贴板?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/136443/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com