我们已经为Xinha文本编辑器编写了一个插件来处理脚注。您可以看一下:
http://www.nicholasbs.com/xinha/examples/Newbie.html

为了处理Webkit和IE在行尾处处理链接的方式上的一些问题(无法使用光标移出同一行上的链接),我们插入一个空白元素并将所选内容移至该位置,而不是崩溃。这在Webkit和Gecko中可以正常工作,但是由于某些原因moveToElementText会吐出一个Invalid Argument异常。我们传递给哪个元素都没有关系,该功能似乎已完全损坏。但是,在其他代码路径中,此功能似乎起作用。

要使用上面的链接重现该错误,请在主文本输入区域中单击,键入任何内容,然后单击带有绿色加号的黄页图标,在灯箱对话框中键入任何内容,然后单击“插入”。导致该问题的代码示例如下:

  if (Xinha.is_ie)
  {
    var mysel = editor.getSelection();
    var myrange = doc.body.createTextRange();
    myrange.moveToElementText(newel);
  } else
  {
    editor.selectNodeContents(newel, false);
  }

有问题的代码位于svn中,网址为:
https://svn.openplans.org/svn/xinha_dev/InsertNote

此插件是针对svn的Xinha分支构建的,网址为:
http://svn.xinha.webfactional.com/branches/new-dialogs

最佳答案

在上面的代码段中看不到它,但是newel已使用另一个自身附加到DOM的元素附加到了dom。插入dom元素时,如果要引用其同级元素,则必须重新获取句柄,因为该句柄无效(我不确定,但我认为它是指文档片段内的DOM元素,而不是从文档操作中检索到句柄之后,moveToElementText停止引发异常。

10-04 11:36