首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >当IE的moveToElementText发出无效参数异常时该怎么办

当IE的moveToElementText发出无效参数异常时该怎么办
EN

Stack Overflow用户
提问于 2008-09-23 17:43:01
回答 2查看 4.3K关注 0票数 5

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

为了处理Webkit和IE处理行尾链接的方式的一些问题(没有办法使用光标离开同一行上的链接),我们插入一个空白元素并将选定内容移动到该元素,然后向右折叠。这在Webkit和Gecko中工作得很好,但由于某些原因,moveToElementText会抛出无效参数异常。我们将哪个元素传递给它并不重要,这个函数似乎完全被破坏了。但是,在其他代码路径中,此函数似乎可以工作。

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

代码语言:javascript
代码运行次数:0
运行
复制
  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

此插件是针对Xinha的一个分支构建的,可从svn获得:http://svn.xinha.webfactional.com/branches/new-dialogs

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2008-09-23 18:35:08

它在上面的代码片段中不可见,但是newel已经使用另一个本身附加到DOM的元素附加到dom。插入dom元素时,如果希望引用它的同级元素,则必须重新检索句柄,因为句柄无效(我不确定,但我认为它引用的是文档片段中的DOM元素,而不是文档中的DOM元素)。从insert操作重新检索句柄后,moveToElementText停止抛出异常。

票数 5
EN

Stack Overflow用户

发布于 2008-09-24 03:01:04

在实现WYSIWYG编辑器时,我有过多次调试IE异常的不幸经历,当DOM节点当前不在所呈现的文档中时,访问DOM节点上的属性(如.parentNode)或将DOM节点传递给函数(如moveToElementText)时,总是会出现这种情况。

正如您所说的,有时DOM节点是从浏览器呈现的“实际”DOM中删除的文档片段的一部分,而有时节点还没有被插入。无论哪种方式,在DOM节点上都有许多属性和方法,只有在“实际的”DOM中正确插入并呈现节点后,才能在IE6中安全地访问这些属性和方法。

真正的问题是,IE6的“无效参数”异常的这种表现形式通常不能通过try/catch来保护。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/122546

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档