www.91084.com

GVKun编程网logo

javascript-如何使用wrapInner()将某些内容包装在html标签中?(怎么把js放在html)

22

在这篇文章中,我们将带领您了解javascript-如何使用wrapInner()将某些内容包装在html标签中?的全貌,包括怎么把js放在html的相关情况。同时,我们还将为您介绍有关HTML.in

在这篇文章中,我们将带领您了解javascript-如何使用wrapInner()将某些内容包装在html标签中?的全貌,包括怎么把js放在html的相关情况。同时,我们还将为您介绍有关HTML.innerHTML vs Jquery.html() – Javascript执行、javascript appendChild,innerHTML,join性能比较代码_javascript技巧、javascript innerHTML使用分析_javascript技巧、javascript innerText和innerHtml应用_javascript技巧的知识,以帮助您更好地理解这个主题。

本文目录一览:

javascript-如何使用wrapInner()将某些内容包装在html标签中?(怎么把js放在html)

javascript-如何使用wrapInner()将某些内容包装在html标签中?(怎么把js放在html)

我有这样的@L_301_0@代码:

<ul>
  <li>Height: 70cm</li>
  <li>Width: 100cm</li>
  <li>Depth: 400cm</li>
  <li>Color: yellow</li>
</ul>

现在,我希望它看起来像这样(将那些span标签插入其中;请注意,总会有一个字符串“:”):

<ul>
  <li><span>Height:</span> <span>70cm</span></li>
  <li><span>Width:</span> <span>100cm</span></li>
  <li><span>Depth:</span> <span>400cm</span></li>
  <li><span>Color:</span> <span>yellow</span></li>
</ul>

我已经尝试过类似的东西:

$('ul.table li').html().replace('<li>', '<li><span class=name>');
$('ul.table li').html().replace(':', ':</span><span class=value>');
$('ul.table li').html().replace('</li>', ':</span></li>');

但这没有用.是否可以使用jQuery(例如,使用wrapInner()或其他类似方法)?

解决方法:

考虑一下:

$( 'li', '.table' ).html( function ( i, html ) {
    html = html.split( ' ' );
    return '<span>' + html[0] + '</span> <span>' + html[1] + '</span>';
});

现场演示:http://jsfiddle.net/simevidas/gyqCh/

但是,您必须确保每个LI都恰好包含一个空格字符,该空格字符应位于这两个单词之间.

HTML.innerHTML vs Jquery.html() – Javascript执行

HTML.innerHTML vs Jquery.html() – Javascript执行

参考:html() vs innerHTML jquery/javascript & XSS attacks

从这一点,我可以推断,Jquery提取< script>标签并在DOM中单独执行,它不会出现在DOM中.

请考虑以下HTML代码:

a =< iframe>< iframe //>< script> alert(1)< / script>

b =< iframe>< iframe> //&LT脚本&GT警报(1) – ; /脚本&GT

截至a中的代码,body.innerHTML = a;不执行脚本,但$(“body”).html(a);确实.

为什么? Jquery的.html()在//之后执行内容但是.innerHTML =不执行?

如果是这样,为什么b.内部.innerHTML =或.html()不会被执行?

更新:对于演示,打开控制台,然后执行:

> document.body.innerHTML =“< iframe>< iframe //>< script> alert(1)< / script>”
> $(“body”).html(“< iframe>< iframe //>< script> alert(1)< / script>”);

1将不执行alert(),但2将执行.用b替换HTML值.两者都不会被执行.

更新2:从我可以确定HTML代码将在Jquery的body()中执行但不在.innerHTML =?

解决方法:

如果在jQuery源代码中更深入一点,我们可以找到html方法.

在这种方法中存在于line

this.empty().append( value );

如果现在转到append,我们可以找到下一个

append: function() {
    return domManip( this, arguments, function( elem ) {
        if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
            var target = manipulationTarget( this, elem );
            target.appendChild( elem );
        }
    } );
}

所以,现在找到domManip.这个函数来自html-string构建的fragmen,如果片段有脚本标签执行next code

DOMEval( node.textContent.replace( rcleanScript, "" ), doc );

在哪里DOMEval

function DOMEval( code, doc ) {
    doc = doc || document;

    var script = doc.createElement( "script" );

    script.text = code;
    doc.head.appendChild( script ).parentNode.removeChild( script );
}

所以,至少,我们找到执行脚本的地方.

那么,为什么在某些情况下html运行脚本,否则不行?

这取决于输入字符串和返回buildFragment function.

在buildFragment中我们可以找到next line

tmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];

其中elem是输入字符串,jQuery.htmlPrefilter是下一个函数

htmlPrefilter: function( html ) {
    return html.replace( rxhtmlTag, "<$1></$2>" );
}

所以,输入字符串刚刚替换为某些regular exporession rxhtmlTag.

rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|Meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,

所以,试试这个来检查字符串:

console.log(jQuery.htmlPrefilter("<iframe><iframe //><script>alert(1)</" + "script>"));
console.log(jQuery.htmlPrefilter("<iframe><iframe> // <script>alert(1)</" + "script>"));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.1/jquery.min.js"></script>

因此,在第一种情况下,结果是

<iframe><iframe /></iframe><script>alert(1)</script>

在tmp div中将其作为innerHTML插入后,div内部创建了两个元素:iframe和script.所以在此脚本可用于查找和执行之后

在第二种情况:

<iframe><iframe> // <script>alert(1)</script>

字符串未更改,并且在tmp div中将其作为innerHTML插入后,div内部只创建一个带编码内容的iframe元素.这就是为什么在这种情况下脚本不能执行.

javascript appendChild,innerHTML,join性能比较代码_javascript技巧

javascript appendChild,innerHTML,join性能比较代码_javascript技巧

复制代码 代码如下:




appendChild,innerHTML,join
















javascript innerHTML使用分析_javascript技巧

javascript innerHTML使用分析_javascript技巧

空格处理

当在DIV中输入"a[任意个空格]a" HTML呈现在Chrome和IE下是一样的:只显示一个空格。

innerHTML属性

  • IE还是两个a加一个空格,
  • Chrome则是原始输入的样子。

回车

当在DIV中输入"a[回车][任意个空格]a"时,HTML呈现Chrome和IE是一样的。

innerHTML属性

  • IE是3个字符,在两个a中间加了个空格。
  • Chrome则是原始输入的样子,将回车解析为\n。

HTML标记

当在DIV中输入"a
a" HTML呈现在Chrome和IE下是一样的。

innerHTML属性

  • IE中是a
    a,将HTML标记大写了!
  • Chrome是a
    a,将HTML标记小写

TEXTAREA中回车

在textarea多行输入框中输入a[回车]b,HTML呈现Chrome和IE是一样的。

value属性

  • IE是4个字符,内容为:a\r\nb
  • Chrome是3个字符,内容为:a\nb
转载自 http://www.cnblogs.com/zjfree/

javascript innerText和innerHtml应用_javascript技巧

javascript innerText和innerHtml应用_javascript技巧

看看代码


    无标题页
   


   

   


   

   

document.getElementById("adiv").innerHTML=txt.join(" ");

使用innerHtml会转义成HTML。加粗显示出来

使用innerText不会转译,标签全出来了

js中的 ok这个函数,就想c#里的StringBuilder,

js中用数组这种写法,可以提高字符串的性能!!!!

 

关于javascript-如何使用wrapInner()将某些内容包装在html标签中?怎么把js放在html的介绍已经告一段落,感谢您的耐心阅读,如果想了解更多关于HTML.innerHTML vs Jquery.html() – Javascript执行、javascript appendChild,innerHTML,join性能比较代码_javascript技巧、javascript innerHTML使用分析_javascript技巧、javascript innerText和innerHtml应用_javascript技巧的相关信息,请在本站寻找。

本文标签:

上一篇Javascript-当该窗口未聚焦时,setTimeout()是否有问题?(当前窗口失去焦点)

下一篇javascript-在单个浮点图上显示点的数据集和线的数据集?(javascript浮点型)