Jquery .text()剥离html在IE-8中不起作用

时间:2013-09-03 11:38:27

标签: javascript jquery

我有一个javascript代码:

<html>
<head>
</head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script>
function datacheck(content){
var content = "<script>for(var i = 0 ; i< 10 ; i++) alert('hello')</script>";
 var text = $(content).text();

alert(text);

}
</script>
<body>
<div>
Click  <input type="button" name="button1" onclick="datacheck()" />
</div>
</body>
</html>

$(内容)的.text();如果我使用

,我在所有浏览器中都会使用去除HTML内容但不能在IE-8中工作
 var content = "<p>for(var i = 0 ; i< 10 ; i++) alert('hello')</p>";

然后它在IE-8中运行良好。 任何人都可以帮助我如何在IE8中使用 $(content).text(); 。 感谢每一位帮助。

3 个答案:

答案 0 :(得分:3)

问题是浏览器在字符串中看到<script>标记并确定这意味着脚本的结束。

第1课:永远不要在javascript代码中包含<script>标记,即使它在字符串中也是如此。浏览器可能会错误地解释它。

围绕它的方式:

  • 在脚本代码周围添加注释或CDATA标记。例如

    <script>
    <!--
    ...... js code here ........
    -->
    </script>
    
  • 将字符串中的<script>标记分解为子字符串。例如

    var content = "<sc"+"ript>for(var i = 0 ; i< 10 ; i++) alert('hello')</scr"+"ipt>";
    
  • 只是不要以这种方式使用<script>标签 - 如果您使用它将JS代码注入您的页面,几乎肯定有更好的方法。也许您应该使用像require.js这样的库?

答案 1 :(得分:1)

您可能需要CDATA tag

<script>
<![CDATA[
function datacheck(content){
var content = "<script>for(var i = 0 ; i< 10 ; i++) alert('hello')</script>";
 var text = $(content).text();

alert(text);

}
]]>
</script>

答案 2 :(得分:0)

<script>
function datacheck(content){
var content = "<script>for(var i = 0 ; i< 10 ; i++) alert('hello')</script>";
content = '<![CDATA[' + content + ']]>';
 var text = ($(content).text()).replace(']]>', '');
alert(text);
}
</script>

这将正常工作。 感谢tea2code为您的答案。