2017-10-03 49 views
1

私はいくつかの機能を必要とするブックマークレットに取り組んでいます。JavaScriptのブックマークレットで複数のグローバル関数を定義する

javascript:void(window.test1=function(){alert('hi');}); 

をしかし、すぐに、私は第2の機能を追加しようとして、それが働いて停止します。個別に、私のような何かを呼び出すことによって、私は必要なすべての機能を定義することができます。

これを実行すると、コンソールで「Unexpected identifier」というエラーが生成されます。 Iは、セミコロン、スペース、キャリッジリターンを持つ2つの関数宣言を分離しようとしている(後者の2進符号化され%20と%0Aとして)、従って間にそれらを挿入する:

javascript:void(window.test1=function(){alert('hi');};window.test2=function(){alert('bye');}); 

これはありませんいずれかの仕事;エラーメッセージ "予期しないトークン"が生成されます。

ブックマークレットのコンテキストで連続して2つの関数を定義するにはどうすればよいですか?

答えて

2

すべての内部関数を1つの関数にラップし、内部関数のすべての必要な関数をwindowオブジェクトのプロパティ/メソッドとして定義してください。したがって

javascript:void(function(){window.test1=function(){alert('hi');};window.test2=function(){alert('bye');}}()); 
+0

はうまく働いていたこと、ありがとうございます。あなたの答えを編集して作業コードに入れて、将来の訪問者が完成した例を得るようにします。 –

関連する問題