2009-09-03 65 views
0

您好我有一个问题,一个JavaScript字符串分配JavaScript字符串没有逃脱

var foo = \"<a href="javascript(foo('a','b'))">test</a>\" 

这句话给了我一个错误

我可以逃脱内“,但我不允许更改<a href="javascript(foo('a','b'))">test</a>这部分

有什么办法来处理这种情况?

感谢, Sourabh

+2

线程处于“不允许更改”位,这个限制是什么原因? – AnthonyWJones 2009-09-03 10:01:34

回答

1

要么逃避引号内的JavaScript:

var foo = "<a href=\"javascript(foo('a','b'))\">test</a>"; 
var foo = "<a href=\x22javascript(foo('a','b'))\x22>test</a>"; 
var foo = '<a href="javascript(foo(\'a\',\'b\'))">test</a>'; 
var foo = '<a href="javascript(foo(\x27a\x27,\x27b\x27))">test</a>'; 

或HTML中逃脱报价:

var foo = '<a href="javascript(foo(&#39;a&#39;,&#39;b&#39;))">test</a>'; 
4

不,你需要以某种方式逃避字符串。

var foo = "<a href=\"javascript(foo('a','b'))\">test</a>"; 

var foo = '<a href="javascript(foo(\'a\',\'b\'))">test</a>'; 
0

没有,也没有办法。由于不允许更改的部分包含引号和撇号,因此无法在Javascript中将其表示为字符串字面值而不对其进行更改。

也许你可以把它当成一个CDATA在页面的XML岛文字,让JavaScript的进行阅读...

2

有没有办法让字符串中的字符,而不在字符串中逃脱他们得到了转义,比如使用@ -quoted,C#语言了。例如

string myString = @""Good Morning", said Dave's mother"; 

你需要使用\字符转义JavaScript中的字符串中的字符。

1

This forum topic似乎至少有一个'有趣'的选择。它采用多行注释匿名函数内部,使含有,字符串以及多串

编辑:据bucabay(在下面的评论),这种方法不再有效,至少在Firefox 3.5中,

+0

这是一个非常简洁的解决方案,它没有JS语言之外的依赖关系。它在HTML或XML中是外部依赖的。 – bucabay 2009-09-03 10:38:50

+1

我刚刚在Firefox3.5中测试了这个解决方案,它不再工作了。函数体被Function.prototype.toString()方法忽略。 – bucabay 2009-09-03 11:35:00

+0

这是一个耻辱。当我发布我的答案时,我在工作,所以无法自己测试。现在我回到家了,我不需要了。 – Duroth 2009-09-03 17:27:48