我有一个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(); 。 感谢每一位帮助。
答案 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为您的答案。