Paste Special 在 Internet Explorer 中正常工作,但在 Chrome 或 Firefox 中不适用。
随着 2011 年的升级,我们一直在推动用户使用 Google Chrome,因为它比 IE 或 Firefox 快得多,而且特殊粘贴无法在 Chrome 中正常工作已成为我们的编辑和制作人遇到的最大可用性问题之一Tridion 2011(毫不奇怪,他们喜欢主要用 msword 编写。)我们在 11 月提出了在 Tridion 支持下,Paste Special 无法在 Chrom 中工作的问题,并收到了两个相互矛盾的回复。
在这两种情况下,Tridion 都承认知道该问题,并且在这两种情况下,他们都表示他们不会在 Tridion 2011 中解决该问题。不同之处在于,在我们收到他们的第一个回复时,他们说他们会解决Tridion 2013 中的问题,在我们收到的第二个回复中,他们说他们没有解决问题的计划。
我们确实查看了代码发生的情况,看看是否可以通过破解 UI 来修复它,我们为 Chrome 发现的是以下启用/禁用粘贴按钮的 sn-p:
if ($dom.isWebkit) // couldn't get it to work in Chrome
{
delete allowedActions["Paste"];
}
所以基本上看起来 Tridion 尝试过但放弃了在 Chrome 中实现选择性粘贴
同样,在 Firefox 中,按钮已启用,但当您尝试粘贴特殊内容时,什么也没有发生。我们的开发经理调试了,结果发现 paste 方法在执行 lDocument.execCommand 时抛出了一个静默异常 -> NS_ERROR_DOM_XPCONNECT_ACCESS_DENIED 在以下代码中:
var lPasteFailed = false;
try
{
pastingWithFlag = iProcessingFlag;
if (lPasteFailed = (!lDocument.execCommand("paste", false, null) || lDocument.body.innerHTML == ""))
{
throw Error("paste had no result - possibly clipboard data unaccessible");
}
if (pastingWithFlag == undefined)
{
lPasteFailed = true; // in certain cases lDocument.execCommand("paste"...) will cause paste into the main area in IE, which will be handled in the onpaste event handler -> do not paste again
}
}
catch (err)
{
$fa.canAccessClipboard = false;
lPasteFailed = true;
self.fireEvent("warning", { source: "paste()", message: err.message });
}
为了解决这个问题,我们面临着很大的内部压力,因此我们将通过 Tridion 支持重新提出该问题,我计划在接下来几天的某个时间与我的客户代表取得联系,以也将此作为一个关键问题向他提出。