URL ではなく JavaScript のみのブックマークを追加する
-
08-06-2019 - |
質問
これができない理由は、巨大なセキュリティホールである可能性があるためだと考えていますが、ここで...
JavaScript コードの一部だけをブラウザ (できれば FF3) にブックマークしたいと考えています。現在の日付に基づいて URL を構築し、その URL に対して window.location = を実行するだけです。
ページを作成してローカル マシンに保存し、その方法で参照できることはわかっていますが、その手順をバイパスして、ブックマークの「場所」を実際に JavaScript だけで指定できるかどうか疑問に思っていました。何年も前ならそれが可能であると断言できましたが、今ではどちらの方法であっても教えてくれるものは見つかりません。
解決
あなたが欲しいのは、 ブックマークレット 作成は簡単で、ほとんどの主要なブラウザで動作します。
編集:スタック オーバーフローでは、サイトのコンテキストでブックマークレットを作成することはできないようです。基本的には、新しいブックマークを作成して、場所フィールドに次のように入力できます。
javascript:window.location='http://www.google.com/search?q='+Date()
現在の日付を Google で検索するブックマークレットを取得します。
他のヒント
これを関数ラッパーに入れることもできることは注目に値します。イラナマジードはそれを私たちにうまく説明してくれました...しかしどうやら私はこのサイトに不慣れすぎて彼の投稿をアップできないようです。:P
明確にするために:
javascript:(function(){
location.href = location.href + "#";
})();
(改行は Chrome と IE のパフォーマンスに影響しませんでした)
小さな落とし穴が 1 つあります。 IE しか扱えない 508 この形式の文字 URL。これより長い URL で IE に保存すると、警告なしに切り詰められ、失敗します。
本当に複雑なスクリプトが必要な場合は、「ホストされた」ブックマークレットを使用する必要があります。この場合、ページにスクリプト タグを挿入する短いブックマークがあり、ホストされたブックマークレットを「呼び出す」ことができます。
これはそれほど優れた/移植性の高いものではありませんが、これが唯一の回避策です。
Googleブックマーク
javascript:(function(){var%20a=window,b=document,c=encodeURIComponent,d=a.open("http://www.google.com/bookmarks/mark?op=edit&output=popup&bkmk="+c(b.location)+"&title="+c(b.title),"bkmk_popup","left="+((a.screenX||a.screenLeft)+10)+",top="+((a.screenY||a.screenTop)+10)+",height=420px,width=550px,resizable=1,alwaysRaised=1");a.setTimeout(function(){d.focus()},300)})();
さて、FF3 でブックマークを作成し、戻って更新し、次のテストを追加しました。
javascript:alert('Wacky%20test%20yo');
なんと、保存してロードした後、アラートを受け取ることができました。
あなたのニーズに合わせて同様のものを作成できると思います。