我以前有这样的代码:
this.insertNodeAtCaret = function(node) {
var sel, range, html;
function containerIsEditable(selection) {
return $(selection.anchorNode).parent().hasClass("editable");
}
if (window.getSelection) {
sel = window.getSelection();
// only if it is a caret otherwise it inserts
// anywhere!
if (containerIsEditable(sel) && sel.getRangeAt
&& sel.rangeCount) {
var previousPosition = sel.getRangeAt(0).startOffset;
sel.getRangeAt(0).insertNode(node);
}
}
else if (document.selection
&& document.selection.createRange) {
range = document.selection.createRange();
html = (node.nodeType == 3) ? node.data
: node.outerHTML;
range.pasteHTML(html);
}
};
但在TypeScript 1.5中选择已从Document(https://github.com/Microsoft/TypeScript/wiki/Breaking-Changes)中删除,所以我不知道如何使它工作..我尝试使用window.getSelection()但没有结果
任何帮助将不胜感激:)
谢谢, 迈克尔
答案 0 :(得分:4)
但在TypeScript 1.5中,选择已从Document
中删除
这是特定于Internet Explorer 和一般不适用于所有浏览器。所以它被删除了。但是,您可以非常轻松地使用不安全(将melt(dt, id = "x")[order(-value), .SD[1:3], keyby = variable]
# variable x value
# 1: y a 2
# 2: y b 2
# 3: y c 2
# 4: z c 3
# 5: z a 3
# 6: z a 2
视为document
)。这是您重构的代码示例,无需编译即可编译:
any
当然,这假设您知道自己在做什么,而不是编译器知道。
如何查看浏览器之间的兼容性以及可用的内容
您可以在此处查看window.getSelection的兼容性图表:https://developer.mozilla.org/en-US/docs/Web/API/Window/getSelection
const insertNodeAtCaret = function (node) {
const doc = document as any;
var sel, range, html;
function containerIsEditable(selection) {
return $(selection.anchorNode).parent().hasClass("editable");
}
if (window.getSelection) {
sel = window.getSelection();
// only if it is a caret otherwise it inserts
// anywhere!
if (containerIsEditable(sel) && sel.getRangeAt
&& sel.rangeCount) {
var previousPosition = sel.getRangeAt(0).startOffset;
sel.getRangeAt(0).insertNode(node);
}
}
else if (doc.selection
&& doc.selection.createRange) {
range = doc.selection.createRange();
html = (node.nodeType == 3) ? node.data
: node.outerHTML;
range.pasteHTML(html);
}
};
仅限IE /特定,已被删除:https://msdn.microsoft.com/en-us/library/ms535869(v=vs.85).aspx