1

我正在尝试编写一个搜索引擎书签(用于 Chrome),但在转义字符串时遇到了麻烦。

例如,如果搜索引擎书签如下:

javascript:alert("%s"); //%s is the search engine query, passed literally by chrome.

然后在以下字符串上运行它会得到不正确的结果:

c:\zebra

c:zebra instead of c:\zebra

如果斜线后面的字符恰好是一个实际的转义字符,那么结果会因字符而异。

我已经尝试转义和取消转义字符串,我尝试对其进行 reg-ex'ing,并用双斜杠替换斜杠,但我无法找到一种方法来让它工作,因为第一次原始string 进入脚本,未转义,之后的任何操作都会看错。

如何正确处理?

4

1 回答 1

3

到目前为止,我只能在 chrome 中完成这项工作:

javascript: var str = (function(){STARTOFSTRING:/*%s*/ENDOFSTRING:;}).toString().match( /STARTOFSTRING:\/\*([\s\S]*)\*\/ENDOFSTRING:/ )[1]; alert(str);

写 c:\zebra 将提醒 c:\zebra。

不幸的是,Firefox 在反编译时不支持函数体内的注释。

您也不能*/在字符串中写入序列,但其他所有内容都应按字面意思传递,包括引号" '

于 2012-07-29T17:22:54.327 回答