Firefox CKEditor:在FF中切换模式(源/所见即所得)后无法取消锚定默认行为(href页面更改)

Firefox CKEditor:在FF中切换模式(源/所见即所得)后无法取消锚定默认行为(href页面更改),firefox,iframe,ckeditor,anchor,behavior,Firefox,Iframe,Ckeditor,Anchor,Behavior,我们在ASP.Net MVC 3页面上安装了一个CKEditor: var editor = CKEDITOR.replace(...); 在这个编辑器中,我们使用一些插件来创建几种类型的元素,导致问题的元素是使用以下结构创建的: <div backendname="asfasdf" class="editableArea" contenteditable="false" displayname="asdfasdf" fieldheight="50" fieldlength="

我们在ASP.Net MVC 3页面上安装了一个CKEditor:

var editor = CKEDITOR.replace(...);
在这个编辑器中,我们使用一些插件来创建几种类型的元素,导致问题的元素是使用以下结构创建的:

<div backendname="asfasdf" class="editableArea" contenteditable="false" displayname="asdfasdf"
     fieldheight="50" fieldlength="610" fieldtype="5" maxchars="0" required="true">
   <a href="google.com">
      <img align="top" alt="" hspace="0" src="http://someaddress/img.jpg"
           style="border-width: 0pt; border-style: solid; margin: 0pt;
           width: 420px; height: 315px;" vspace="0" />
   </a>
</div>
正如您所看到的,我们已经尝试了一些事件取消的变体,以防止锚行为。当第一次创建元素时,它会按预期工作。当我们在CKEditor中切换模式时,问题就出现了

对于不熟悉CKEditor的用户,当您在“源”和“所见即所得/设计”之间切换模式时,设计模式使用的iframe将被销毁并替换为textarea。当切换回设计时,将重新创建iframe并填充所有内容

我们尝试在CKEditor上使用此事件重新附加click事件,如下所示:

editor.on('mode', function (e) {
 if (e.data.previousMode == 'source') {
    $jq("iframe").contents().find('.editableArea a').click(AnchorClick);
   }
});

function AnchorClick(event) {
   event.preventDefualt();
   event.originalEvent.preventDefault();
   event.preventPropagation();
   event.returnValue = false;
   return false;
} (this function was separated for debugging purposes)
同样,我们尝试了我们能想到的任何方法,但是FF仍然遵循iframe内部的链接,这导致了CKEditor及其内容的丢失

我们无法在锚定标记中定义
href=“…
”,因为CKEditor中的信息是为将来使用而存储的,因此我们必须在链接中存储真实的href


我知道这是一个非常奇怪的问题。事实上,我想不出还有什么可以做的,也找不到关于如何克服这种特殊情况下的FF行为的信息。希望SO的许多用户中至少有一个遇到过类似的问题,可以为我们指出正确的方向。

这是一个打字错误。这个问题解决了

function AnchorClick(event){
event.preventDefualt();
...
}
function AnchorClick(event){
event.preventDefualt();
...
}