Error: Error in Rangy WrappedRange module: createRange(): Parameter must be a Window object or DOM node
Error: Error in Rangy WrappedRange module: createRange(): Parameter must be a Window object or DOM node
我有这两个功能:
function menuItemListener( link ) {
var side = link.getAttribute("data-action");
if (side == 'Mark as A' || side == 'Mark as B') {
highlighter(side);
$.ajax({
method: "POST",
url: "http://localhost:3000/",
dataType: "json",
data: JSON.stringify({"rangyobject" : rangy.saveSelection()}),
contentType: "application/json; charset=utf-8",
success: function(result) {
console.log('yei');
}
});
}
toggleMenuOff();
}
function loadHighlights () {
window.addEventListener("load", function load(event){
$.ajax({
method: "GET",
url: "http://localhost:3000/ranges",
dataType: "json",
contentType: "application/json; charset=utf-8",
success: function(result) {
console.log('loadHighlights results: ', result[0].rangyObject);
rangy.restoreSelection(result[0].rangyObject);
}
});
},假);
};
所以它只是将 rangy.saveSelection() 存储在数据库中,然后将其取回并尝试在其第一个元素上 rangy.restoreSelection。
console.log 看起来不错,但我在控制台中收到错误消息:
错误:Rangy WrappedRange 模块出错:createRange():参数必须是 Window 对象或 DOM 节点
rangy.saveSelection() 在控制台中看起来像这样:
{win: undefined, 运行geInfos: Array, restored: false}
注意"win: undefined"
当我发送到数据库时,我使用
数据:JSON.stringify({"rangyObject" : rangy.saveSelection()})
从数据库中检索回来时,它看起来像:
{运行geInfos:数组,恢复:false}
- 注意 'win' 被保存到数据库中省略了
我能够使用序列化和反序列化函数来规避这个问题,但是这些函数不会用它们创建的跨度创建 id,所以我 运行 遇到了另一个问题。
我有这两个功能:
function menuItemListener( link ) {
var side = link.getAttribute("data-action");
if (side == 'Mark as A' || side == 'Mark as B') {
highlighter(side);
$.ajax({
method: "POST",
url: "http://localhost:3000/",
dataType: "json",
data: JSON.stringify({"rangyobject" : rangy.saveSelection()}),
contentType: "application/json; charset=utf-8",
success: function(result) {
console.log('yei');
}
});
}
toggleMenuOff();
}
function loadHighlights () {
window.addEventListener("load", function load(event){
$.ajax({
method: "GET",
url: "http://localhost:3000/ranges",
dataType: "json",
contentType: "application/json; charset=utf-8",
success: function(result) {
console.log('loadHighlights results: ', result[0].rangyObject);
rangy.restoreSelection(result[0].rangyObject);
}
});
},假); };
所以它只是将 rangy.saveSelection() 存储在数据库中,然后将其取回并尝试在其第一个元素上 rangy.restoreSelection。 console.log 看起来不错,但我在控制台中收到错误消息:
错误:Rangy WrappedRange 模块出错:createRange():参数必须是 Window 对象或 DOM 节点
rangy.saveSelection() 在控制台中看起来像这样:
{win: undefined, 运行geInfos: Array, restored: false}
注意"win: undefined"
当我发送到数据库时,我使用
数据:JSON.stringify({"rangyObject" : rangy.saveSelection()})
从数据库中检索回来时,它看起来像:
{运行geInfos:数组,恢复:false}
- 注意 'win' 被保存到数据库中省略了
我能够使用序列化和反序列化函数来规避这个问题,但是这些函数不会用它们创建的跨度创建 id,所以我 运行 遇到了另一个问题。