で働いていない私は、Firefox 6のアドレスバーに、このJavaScriptコードを実行してみました:JavaScriptの警告は、Firefox 6
javascript:alert("Hello")
私はそれはしかしFirefoxの5で正常に動作するために使用
ReferenceError: alert not defined.
を取得しますOpera、Safari、Chromeで動作します。これをどうやって解決するのですか?
で働いていない私は、Firefox 6のアドレスバーに、このJavaScriptコードを実行してみました:JavaScriptの警告は、Firefox 6
javascript:alert("Hello")
私はそれはしかしFirefoxの5で正常に動作するために使用
ReferenceError: alert not defined.
を取得しますOpera、Safari、Chromeで動作します。これをどうやって解決するのですか?
それは(直接アドレスバーに)javascript:
とdata:
URLを使用しているようだが、現在as per this comment許可されていません。
FYI, I'm probably going to split this bug into multiple, short and longer term fixes.
Short term: disallow pasting of javascript: URLs into the URL bar
Longer term: additionally require that bookmarklets be "whitelisted" in the Bookmark Manager before it can run JavaScript
そしてlatest versionで解決されましたthis is the "bug"。 last commentも述べている:今
javascript: is not actually ignored - they're run, but in an "empty" context that doesn't have any of the usual DOM methods you would expect, so most common uses (e.g. javascript:alert(1)) just throw (and thus are effectively ignored). javascript:1+1 works fine, though.
:
How do I fix this?
あなたは、あなたは彼らが適切な解決策を決定するまで待つことはできません。コメントによると、ブックマークレットは機能しますが、明示的に許可する必要があります。コードをテストするだけの場合は、Firebugまたは新しいScratchpadフィーチャーのいずれかを使用します。
URLバーのjavascript:
がこれ以上動作しない理由をFelixの答えで正しく述べています。
この場合、ウェブページをデバッグしようとすると、Webコンソール(エラーコンソールと混同しないでください)が表示されます。コンパクトメニューでは、Web Developerの下にあります。フルメニューバーの[ツール]にあります。あるいは、Ctrl-Shift-K(Macではcmd-shift-K)を押すことができます。より大きい記号を含むバーはJavaScriptプロンプトです。そこに入力されたコードは、現在のページのコンテキストで評価されます。そのバーの上にある下線を引いた部分をクリックすると、インスペクタウィンドウが表示されます。
+1 Webコンソール用...聞いたことがありますが、忘れていました;) –
* *コマンド+ alt + K(Mac)悲しい一日、私はアドレスバーにJavaScriptを入力することを欠場するつもりです... –
クリック可能なブックマークレットが壊れていて、それを元に戻したい場合は、代わりにCustom Buttons Firefox拡張を使用して、ボタンをクリックするとクリック可能なボタンを作成できます。
スクラッチパッドから実行している以上のボタンの利点:
ボタンはFirefoxのクロムレベルで実行されるため、拡張子は少し特殊ですので、彼らはもう少し特権(ブラウザのAPIと対話することができますが)だ、と何の1対1の対応はありません通常のJSとボタンコード(の間では少し調整が必要です)。より正確には、ボタンから見たdocument
とwindow
は期待していたものではありません。
(よりよいウィンドウを再定義していない;)しかし、あなたは、変数に「良い」window
とdocument
を割り当てることができ、その後、代わりにこれらの変数に取り組む
ここFX10にはかなりうまく機能し、私が書かれたサンプルコードがあります:
// get proper 'window' and 'document' into our private variables
var theWindow = window.top.getBrowser().selectedBrowser.contentWindow;
var theDocument = theWindow.document;
// here we go
var input = theDocument.getElementById("foo");
input.focus(); // just to show you it's working, unnecessary in fact
// simulate keyboard event
var evt = theDocument.createEvent("KeyboardEvent");
evt.initKeyEvent ("keypress", true, true, theWindow ,
0, 0, 0, 0, 0, 65); // 65 == "A"
input.dispatchEvent(evt);
// show alert after 2 sec
theWindow.setTimeout(function(){
input.value += "B";
theWindow.alert(input.value); // alerts "AB"
},2000);
代わりに直接グローバル関数(のようなsetTimeout
、またはalert
)を使用して、あなたは彼らの前theWindow.
を配置する必要があり、そして地元theDocument
でdocument
/window
を置き換えます/ theWindow
と動作しているようです。非常に複雑なケースでは完全にテストしていません。
ボタンを追加するには、すでにボタンがある場合はを右クリックし、[新しいボタンを追加...]を選択します。
どうすればよいですか? – Ryan
@ライアン:あなたが私の答えでしたことを正確に行うことによって、あなたを最も助けた答えを受け入れます。あなたは古い質問に戻り、そうするべきです。 –