打字稿版本中缺少文档类的函数

时间:2017-05-18 15:34:03

标签: typescript

我们正在从javascript迁移到typescript,而且文档类中的一些函数似乎不再存在。我找不到任何相同的东西。

 1) createRange()
          var textRange = document.getSelection().createRange();
 2)createTextRange
          var preCaretTextRange = document.body.createTextRange();
 3)focus()
        var el : Node= document.getElementById(divId).childNodes[0];
           el.focus();

Picture is worth a thousand words

1 个答案:

答案 0 :(得分:2)

(1)Selection对象没有createRange方法(也可以在lib.d.ts definition中看到)。
相反,您应该使用document.createRange

var textRange = document.createRange();

(2)createTextRange是IE唯一的东西(CreateTextRange is not working in Chrome),它不是标准。
这有一个问题:'createTextRange' seems to be missing from 'lib.dom.d.ts' and other including libs说:

  

这是一个休息,因为这是一个仅限IE的API。用户可以增加   必要时接口

所以你可以这样做:

interface TextRange {
    ...
}

interface HtmlElement {
    createTextRange(): TextRange;
}

(3)focus()部分运行良好,编译器没有问题。

修改

Node对象没有focus()方法,因此您需要强制转换它:

var el = document.getElementById(divId).childNodes[0] as HTMLElement;
el.focus(); // works now