1

検索エンジンのブックマークレット (Chrome 用) を作成しようとしていますが、文字列をエスケープするのに問題があります。

たとえば、検索エンジンのブックマークレットが次の場合:

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

次に、次の文字列で実行すると、誤った結果が得られます。

c:\zebra

c:zebra instead of c:\zebra

スラッシュの後の文字が実際のエスケープ文字である場合、結果は文字によって異なります。

文字列をエスケープおよびエスケープ解除しようとしましたが、正規表現を試みて、スラッシュをダブルスラッシュに置き換えてみましたが、これを機能させる方法がわかりません。文字列がスクリプトに入ると、エスケープされず、その後の操作で正しく表示されません。

どうすればこれを正しく処理できますか?

4

1 に答える 1

3

これまでのところ、これはクロムでしか機能しません。

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 に答える