2009-09-03 103 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