web-dev-qa-db-ja.com

JavaScriptをブックマークまたはブックマークレットに変えますか?

アイクリックでWindows8と同じように、ホバーでパスワードを表示するスクリプトを1つ作成しました。

この機能は、次のコードを使用してJavaScriptで作成しました。

function text(){this.type="text"}function password(){this.type="password"}function addHandlers(){var e=false;var t=document.evaluate("//input[@type='password']",document,null,6,null);for(var n=t.snapshotLength-1,r;r=t.snapshotItem(n);n--){if(!e){r.addEventListener("mouseover",text,false);r.addEventListener("mouseout",password,false)}else{r.addEventListener("focus",text,false);r.addEventListener("blur",password,false)}}}addHandlers()

パックされたJavaScriptコードで申し訳ありませんが、このスクリプトを実行するブックマークまたはブックマークレットを作成したいと思います...

私は試した:

javascript:(mycode);

しかし、それはうまくいきませんでした...

5
vishal

あなたの特定の問題を解決するために、私はあなたのJavaScriptコードをこのバージョンでエラーなしで実行することに成功しました:

javascript:(function(){function text(){this.type="text"};function password(){this.type="password"};function addHandlers(){var e=false;var t=document.evaluate("//input[@type='password']",document,null,6,null);for(var n=t.snapshotLength-1,r;r=t.snapshotItem(n);n--){if(!e){r.addEventListener("mouseover",text,false);r.addEventListener("mouseout",password,false)}else{r.addEventListener("focus",text,false);r.addEventListener("blur",password,false)}}};addHandlers();alert("bookmarklet loaded");})();

コードが機能するかどうかを確認するために、ブックマークレットの最後にalert("bookmarklet loaded");を追加しました。そのため、Firefox 17でテストしたので、結果としてメッセージボックスが表示されることを確認してください。あなたのコードが機能するか機能しないかは言えませんが、もちろんこれは問題ではありませんでした。

_<script></script>_タグ内のJavaScriptコードの変換をブックマークレットに採用しやすくするために、覚えておくことができることがいくつかあります。

  • 通常のJavaScriptコードでは、改行で2つのコマンドを区切ることができます。ブックマークレットは1行なので、改行をセミコロン;に置き換えます。

ここでの例

例を見てみましょう。 2つの命令を含む2つのソースコードスニペットを作成しましょう。

_var anumber=1
var atext="hallo"
_

すべてを1行にまとめると(=空白に改行を入れる)、最初は次のようになります。

_var anumber=1 var atext="hallo"
_

これはもはや有効なJavaScriptコードではありません。 2つの命令を1行で結合する場合は、次のようなセミコロンを使用して2つの命令を区切る/区切る必要があります。

_var anumber=1; var atext="hallo"
_
  • この種のクロージャのようなものですべてのコードをラップします。
    javascript:(function(){ [...here your code...] })();

解決策を調査す​​るためにそこにかなりの数のウェブサイトがあります。のように ここ

6

あなたは実際にはかなり近かった。あなたはそれをこのように置く必要があります:

javascript:(function(){mycode})();

あなたの例では、これを試すことができます:

javascript:(function(){function text(){this.type="text"};function password(){this.type="password"};function addHandlers(){var e=false;var t=document.evaluate("//input[@type='password']",document,null,6,null);for(var n=t.snapshotLength-1,r;r=t.snapshotItem(n);n--){if(!e){r.addEventListener("mouseover",text,false);r.addEventListener("mouseout",password,false)}else{r.addEventListener("focus",text,false);r.addEventListener("blur",password,false)}}};addHandlers()})();

コードを縮小するときはセミコロンに注意してください。セミコロンの一部が欠落しています。

4
Kar.ma