我正在尝试编写一个搜索引擎bookmarklet(适用于Chrome),但我无法转义该字符串。
例如,如果搜索引擎bookmarklet如下:
javascript:alert("%s"); //%s is the search engine query, passed literally by chrome.
然后在以下字符串上运行它将得到不正确的结果:
c:\zebra
c:zebra instead of c:\zebra
如果斜杠后面的字符碰巧是实际的转义字符,那么结果会因字符而异。
我已经尝试了转义和转义字符串,我已经尝试过注册它,并用双斜线替换斜杠,但我无法想办法让这个工作因为第一次原始字符串进入脚本,它是未转义的,之后的任何操作都会错误地看到它。
如何正确处理?
答案 0 :(得分:3)
到目前为止,我只能在chrome中完成这项工作:
javascript: var str = (function(){STARTOFSTRING:/*%s*/ENDOFSTRING:;}).toString().match( /STARTOFSTRING:\/\*([\s\S]*)\*\/ENDOFSTRING:/ )[1]; alert(str);
写c:\ zebra将警告c:\ zebra。
不幸的是,Firefox在反编译时不支持函数体内的注释。
您也无法在字符串中编写序列*/
,但其他所有内容都应按字面意思传递,包括引号"
'
等