在bookmarklet中转义原始的,未转义的字符串

时间:2012-07-29 16:29:14

标签: javascript string google-chrome escaping bookmarklet

我正在尝试编写一个搜索引擎bookmarklet(适用于Chrome),但我无法转义该字符串。

例如,如果搜索引擎bookmarklet如下:

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

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

c:\zebra

c:zebra instead of c:\zebra

如果斜杠后面的字符碰巧是实际的转义字符,那么结果会因字符而异。

我已经尝试了转义和转义字符串,我已经尝试过注册它,并用双斜线替换斜杠,但我无法想办法让这个工作因为第一次原始字符串进入脚本,它是未转义的,之后的任何操作都会错误地看到它。

如何正确处理?

1 个答案:

答案 0 :(得分:3)

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

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

写c:\ zebra将警告c:\ zebra。

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

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