【问题标题】:Error: Error in Rangy WrappedRange module: createRange(): Parameter must be a Window object or DOM node错误:Rangy WrappedRange 模块中的错误:createRange():参数必须是 Window 对象或 DOM 节点
【发布时间】:2017-03-26 07:21:36
【问题描述】:

我有这两个功能:

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 节点

【问题讨论】:

    标签: node.js rangy


    【解决方案1】:
    1. rangy.saveSelection() 在控制台中看起来像这样:

      {win: undefined, rangeInfos: Array, restore: false}

    2. 注意“win: undefined”

    3. 当我将它发送到数据库时,我使用

      数据:JSON.stringify({"rangyObject" : rangy.saveSelection()})

    4. 当从数据库中检索它时,它看起来像:

      {rangeInfos:数组,已恢复:false}

    5. 请注意,保存到数据库时省略了“win”

    我能够使用序列化和反序列化函数来规避这个问题,但是它们不会使用它们创建的跨度创建 id,所以我遇到了另一个问题。

    【讨论】:

    • @TimDown 或许能帮上忙
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-02
    • 1970-01-01
    • 2020-12-31
    • 2021-07-01
    • 2018-07-29
    • 2020-08-15
    相关资源
    最近更新 更多