スクリプトタグのdocument.locationを使用してページが再読み込みされないようにしたいサイトがあります。 Firefoxでこれを行うにはどうすればよいですか?
実際、HTMLコードに次のようなリダイレクトのあるインラインJavaScriptブロックが含まれている場合、Greasemonkeyはブロックしません。
<script type="text/javascript">
var url = "http://google.com";
document.location.replace(url);
</script>
ただし、Greasemonkeyを使用すると、特定の関数への呼び出しをブロックできます。上書きするだけです:)。上記が次のような関数呼び出しにラップされている場合:
<script type="text/javascript">
function redirect_to(url)
{
document.location.replace(url);
}
</script>
次に、Greasemonkeyで関数を再定義できます。
function redirect_to(url){ return true }
Firefox経由でインラインリダイレクトをブロックする
基本的にFirefoxでは、location.href.replace
などのDOM操作を特定のサイトからいわゆる次の方法でブロックできます。 構成可能なセキュリティポリシー(CAPS)
警告の言葉:セキュリティ設定により、そのドメインからのlocation.href.replace
のすべての呼び出しがブロックされることに注意してください。アプリケーションがその呼び出しを利用する場合、一部の呼び出しを許可し、他の呼び出しをブロックする方法はありません。
location.href.replaceをブロックするようにCAPSを設定する
このタスクにはGreasemonkeyは必要ありません。 Firefoxには、サイトごとにDOMオブジェクトのプロパティ/メソッドへのアクセスを許可/禁止する機能が組み込まれています。これは構成可能なセキュリティポリシー(CAPS)と呼ばれ、 1 で説明されています。
最も単純なケースを想定した短いガイド:
次の行をuser.jsに追加します。
user_pref( "capability.policy.policynames"、 "noframebuster"); user_pref( "capability.policy.noframebuster.sites"、 " http://www.annoying-site.com "); user_pref( "capability.policy.noframebuster.Location.replace"、 "noAccess");
もちろん、ドメインをフレームのリダイレクトを防ぎたいドメインに置き換える必要があります。
私のブログ(justaddwater.dk)からより詳細な説明を見つけてください: FramebusterJavaScriptのFirefoxのヒント 。
Firefoxにあるdebugging機能を使い慣れている場合は、 watch メソッドが機能します。
document.watch('location', function() {
return '#';
});
[〜#〜] mdn [〜#〜] で、パフォーマンスなどに関する警告の適用可能性についてはよくわかりません。おそらく、この状況で誰かがこれらについて何らかの洞察を持っているでしょう。
はいスクリプト拡張子 を試してください。
はいスクリプトを使用すると、JavaScriptの実行が許可されていないサイトのブラックリストを作成できます。
GreaseMonkey Firefox用のアドオンは、まさにそれを行うように設計されています。