2014-11-21 77 views
0
<script type="text/javascript"> 
var randomnumber=Math.floor(Math.random()*10000); 
var sr = 'http://www.example.com/example.js?rnd='+randomnumber; 
document.write("<script type=\"text/javascript\" src=\"" + sr + "\" id-value-test=\"100\" > </script>"); 
</script> 

未终止的字符串文字在id-value-test。任何想法?问题在javascript属性值

+0

有更好的办法OS这样做 - 不过,最简单的就是使用嵌套引号替换''''和'''''document.write(“” );' – karthikr 2014-11-21 16:38:39

+1

@karthikr:是的,但嵌套引号不是问题。 :-) – 2014-11-21 16:41:02

回答

7

在做的HTML解析,浏览器不解析JavaScript的,所以他们停在第一</script>序列,他们发现  —即使是在一个字符串文字或JavaScript注释。

为了避免它,只是做任何事情打断</script>在你的字符串,如:

<script type="text/javascript"> 
var randomnumber=Math.floor(Math.random()*10000); 
var sr = 'http://www.example.com/example.js?rnd='+randomnumber; 
document.write("<script type=\"text/javascript\" src=\"" + sr + "\" id-value-test=\"100\" > <\/script>"); 
<!-- Change is here -----------------------------------------------------------------------------^ --> 
</script> 

<script type="text/javascript"> 
var randomnumber=Math.floor(Math.random()*10000); 
var sr = 'http://www.example.com/example.js?rnd='+randomnumber; 
document.write("<script type=\"text/javascript\" src=\"" + sr + "\" id-value-test=\"100\" > </" + "script>"); 
<!-- Change is here ----------------------------------------------------------------------------^ --> 
</script>