Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 哪些基本字符转换为html实体?_Javascript_Jquery_Html - Fatal编程技术网

Javascript 哪些基本字符转换为html实体?

Javascript 哪些基本字符转换为html实体?,javascript,jquery,html,Javascript,Jquery,Html,我正在尝试编写一个例程,比较$(element).text()和$(element).html()的输出,以确定html标记的位置。这将在以后用于将格式标记(如“strong”和“em”)应用于contenteditable,而无需求助于document.execCommand() 此时,我意识到为了使比较有效,诸如'>','LI,OL>LI标记之类的字符位于contenteditable div中 内容标签(p、H1-H6和没有UL或OL子项的LI标签)将只允许包含STRONG、EM、A、SU

我正在尝试编写一个例程,比较$(element).text()和$(element).html()的输出,以确定html标记的位置。这将在以后用于将格式标记(如“strong”和“em”)应用于contenteditable,而无需求助于document.execCommand()

此时,我意识到为了使比较有效,诸如'>','LI,OL>LI标记之类的字符位于contenteditable div中

内容标签(p、H1-H6和没有UL或OL子项的LI标签)将只允许包含STRONG、EM、A、SUB、SUP和SPAN标签

我的目标不是IE,但我想让它在FF和Chrome中工作,而不存在平台差异。其中一个平台差异是document.execCommand()在粗体或斜体文本时的执行方式。FF在chrome使用标记时将所选内容换行。我已决定使用以下方式应用格式:

  • 获取选择范围
  • 列出范围内的所有“内容标签”
  • 使用范围对象及其与每个“内容标记”的关系,我定义了三个文本块:选择前、选择后和选择前。它们是以纯文本的形式出现的,特殊字符不会转换为实体
  • 对于每个“内容标记”innerhtml,我逐个字符进行解析,以分解为每种标记的“映射”。我已经建立了标签的层次结构:a>span>sub | sup>strong>em。“地图”如下所示:
  • 对于innerhtml:
    这是一个测试文本

    text: this is a test text
         a: __________XXXXXXXXX
    strong: ________X_XXXX_____
        em: _____XXXX__________
    
  • 使用选择前、选择后和选择后文本,以及格式化操作,然后创建一个掩码。例如,如果“this is”需要加粗,则掩码应为:
  • 将遮罩与贴图组合后,生成的贴图为:
  • 此映射将转换为html:
  • 这是一个测试
    
  • 用生成的html替换“容器标记”的innerhtml
  • 现在我问这个问题的原因是我需要从html中提取的文本块和范围提供给我的文本完美匹配。所以我不能转换任何特殊的角色,只能转换“基本”角色


    我知道这可能不是解决这个问题的最简单或最快的方法,但我是一个视觉思考者,以某种方式将问题放在二维网格中非常有帮助。

    我不太清楚您在这里试图问什么

    现在我只能说:是的,
    &
    (如果在引用的属性中使用
    ),如果写入
    .html()
    /
    。innerHTML
    ,则应该转义。它们在所有情况下都不需要转义,但总是这样做从来没有错

    如果你需要一个更广泛的答案,你需要更具体(例如代码示例)

    编辑:

    我仍然不确定我是否理解您试图实现的目标。您是否试图去除
    p
    元素中的任何HTML元素(标记)?然后您可以设置读取文本并将其设置回:

    $("p").text($("p").text());
    
    或者,如果您只需要转换任何有问题的字符,您可以使用“unononymous”元素,将其
    text
    设置为要转换的文本,并读取其
    .html()


    alert($(“”)。text(“一些文本和一些字符>,谢谢你的回答,我已经更新了这个问题并作了进一步的澄清。我没有任何与此相关的代码。到目前为止,只有and&字符似乎是必要的。接受这基本上就是我最终要做的。如果你想知道整个故事,(可能听起来很愚蠢),继续阅读:(由于此评论框有限,因此添加到问题)
    
    some text, and some characters >, <, ", &, ', ë
    
    text: this is a test text
         a: __________XXXXXXXXX
    strong: ________X_XXXX_____
        em: _____XXXX__________
    
      text: this is a test text
    strong: XXXXXXX____________
    
      text: this is a test text
         a: __________XXXXXXXXX
    strong: XXXXXXX_X_XXXX_____
        em: _____XXXX__________
    
    <strong>this <em>is</em></strong><em> </em><strong><em>a</em></strong> <a href="#"><strong>test</strong>
    
    $("p").text($("p").text());
    
    alert($("<div>").text("some text, and some characters >, <, \", &, ', ë").html());