プロが教える店舗&オフィスのセキュリティ対策術

Google Chromeで使うブックマークレットをJavaScriptで作成したのですが、
コード内にURLエンコードの値(%3Aや%2F)を含むと動きません。
仕方ないのでencodeURIComponent()を使っているのですが、
直接%3Aや%2Fを書く場合は何かエスケープ?のような処理が必要なのでしょうか?

Chromeのバージョンは、90.0.4430.85(Official Build) (64 ビット)です。

※先日からJavaScriptを調べ始めまして知識は初心者です。

質問者からの補足コメント

  • つらい・・・

    間違えました。
    例えば下のようなコードで:が%3Aに置き換わりません。
    javascript:(function(){var URL_Ss1="before:";URL_Ss1=URL_Ss1.replace(/:/g,"%3A");alert(URL_Ss1);})()

      補足日時:2021/04/21 13:43

A 回答 (1件)

ブックマークレットとは URL にスクリプトを埋め込む手法です。


そのため URL 構文にて特別の意味を持つ U+0025(%) を
直接は書けないので再度エスケープしてください。

誤: "%3A" → ブラウザは ":" と解釈
正: "%253A" → ブラウザは "%3A" と解釈

参考
https://url.spec.whatwg.org/#percent-encoded-bytes
https://ja.wikipedia.org/wiki/パーセントエンコーディング
    • good
    • 0
この回答へのお礼

エスケープしたところ、無事に%3Aと表示されるようになりました。
困っていたので助かりました。
どうもありがとうございました!

お礼日時:2021/04/21 18:08

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!