将Javascript代码转换/转义为字符串,以便放置在HTML页面上



我有一些Javascript代码需要动态创建为字符串,然后通过JScript函数"管道"到页面上。

。把这个:

<script type="text/javascript">
var so_id = new SWFObject("url", "so_id", 600, 400, "7", "#FFFFFF");
</script>

这:

var retString = '<script type="text/javascript">n'
+ 'var so_' + id + ' = new SWFObject("' 
+ url + '", "' + id + '", ' + width
+ ', ' + height + ', ' + player + ', "#FFFFFF");n'
+ '</script>n';

我正在寻找一个简单的方法来把代码的第一个比特变成一个字符串在底部的例子。任何引号等都需要转义。

在这个特殊的例子中,我不需要转义任何东西,因为我使用了不同类型的引号来包围字符串,而不是里面的引号。理想情况下,解决方案将自行处理这些问题,但我很乐意指定我使用的是哪个。

目前我正在手动逃避一切,但这是相当劳动密集型…我正准备开始一个基于JS/HTML表单的解析器,但想知道是否有人在SO听说过/使用过类似描述的东西?

编辑
背景:

我们正在使用一个名为ConfirmIt的在线调查创建包,它使用JScript添加额外的功能(逻辑/问题排序等)。为了让JavaScript进入页面,我们使用上面的JScript函数编译一个String,然后在加载时将其"管道"到页面中。这意味着我可以使用的工具非常有限,所以您在回答问题时需要考虑到这一点。

编辑2

我写了一个JavaScript实用程序来做到这一点,在单引号和双引号之间切换。只要始终如一地使用一组引号,就不必担心动态转义两组。

这将把代码变成一个字符串:

<script src="http://code.jquery.com/jquery-1.5.2.min.js"></script>
<script id="test" type="text/javascript">
var x = "asfasfasfsdsadf";
function xyz() {
    alert("Hello world");
}
</script>
<script type="text/javascript">
$(function() {
    alert( $("#test").text());
});
</script>

虽然您可能需要空格而不是制表符。当我在Chrome中尝试时,它将标签显示为特殊字符;

我是否可以安全地假设您正在做一些Ajax的东西与此,并试图动态运行javascript注入到页面在某个点?

如果是这样,那么你可能想看看JSONP (JSON with Padding)。您的服务器端脚本可以返回一个函数调用,当您抓取它时,该函数调用在浏览器上运行,基本上是一个简单的回调。

如果我理解错了,请提供更多的背景,我会再看一遍:)

欢呼皮特

这对我来说很好

<script type="text/javascript">
function main(){
var a;
}
alert(main.valueOf());
</script>

最新更新