Help us understand the problem. What is going on with this article?

Operaのキーボードショートカット設定ファイルで"(ダブルクオート)が使えない問題

More than 5 years have passed since last update.

問題

Operaのキーボードショートカット設定ファイルで

a="Go to page, "javascript:alert(0);""

などとすると任意のjavascriptを実行するブックマークレットを1keyショートカットに設定することができますが、
この設定ファイルにおいて"(ダブルクオート)が特殊文字扱いになっているため、
javascriptのストリングリテラルをつくるのにシングルクオートしか使えないという事になっています。

じゃあシングルクオート縛りでjs書けばいいじゃんと思いきや、JSONにおける文字列型はダブルクオートしか使ってはいけないという制約があります。

というわけで、この設定ファイル内のjavascriptでvalidなjsonを文字列として含めたいという場合、困ります。

解決策

var dq=String.fromCharCode(34);

とすることでダブルクオートを含んだ文字列を表現することができます。

以下具体例

a="Go to page, "javascript:(function(){var dq=String.fromCharCode(34);var i=new Image();i.src='http://fluentd/tag?json='+'{'+dq+'title'+dq+':'+dq+escape(document.title)+dq+','+dq+'url'+dq+':'+dq+escape(location.href)+dq+'}';document.body.appendChild(i);})();""

誰かの役に立つんだろうかこのノウハウ

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away