好的,我从用户输入中得到了一些类似下面的东西,知道</script>在document.write()函数中不能工作
<script type="text/javascript">document.write("<script type='text/javascript' src='"+(location.protocol == 'https:' ? 'https:' : 'http:') + "//www.domain.com/script.js'></script>");</script>有没有办法在document.write()函数中替换到</scr"+"ipt>的</script>?
发布于 2013-05-27 18:10:31
在document.write()函数中有没有替换
</script>to</scr"+"ipt>的方法呢?
不是的。
字符序列</script>甚至在到达JavaScript解析器之前就被HTML解析器解析为结束标记。
您必须在将源代码发送到浏览器之前对其进行编辑。
也就是说,有更好的方法来解决这个问题,而不是查看location.protocol。请改用方案相对URI:
<script src="//www.example.com/script.js'></script>或者将HTML文档的所有HTTP流量重定向到HTTPS,这样您就不会在不安全的连接上为它提供服务。
你的评论表明你应该问的问题是:
如何使用PHP将任意提交的表单数据放入JavaScript字符串中?
使用json_encode函数。如果您向它传递一个字符串,它将为您提供一个适合插入到<script>元素中的JavaScript转义字符串。(但它不是有效的JSON文本,因为它必须在最外层有一个对象或数组)。
<script>
document.write(<?php echo json_encode($_POST['script']); ?>);
</script>严重安全警告:在不实现protection from CSRF attacks的情况下不要这样做,因为允许第三方导致您的用户向您的站点提交JavaScript可能是一个主要问题。
https://stackoverflow.com/questions/16770823
复制相似问题