2

<body onload="...">GreaseMonkeyを介してイベントを変更/削除することは可能ですか?

問題のコードは次のとおりです。

<body onload="if (document.body.scrollIntoView &amp;&amp; (window.location.href.indexOf('#') == -1 || window.location.href.indexOf('#post') &gt; -1)) { fetch_object('currentPost').scrollIntoView(true); }">

完全に実行されないようにしたい(URLにハッシュが存在しない場合でも投稿にスクロールするのは面倒なvBulletin機能であり、「戻る」ボタンを使用したときにもトリガーされるようです)。

4

1 に答える 1

2

はい、<body onload="..." ...Greasemonkey が DOM をインタラクティブに使用できるようになるとすぐに上書きすることでインターセプトできます (おそらく Chrome でも動作させることができますが、テストはされていません)。

これは機能します:

// ==UserScript==
// @name        _Block inline onload function
// @namespace   _pc
// @include     http://YOUR_SERVER/YOUR_PATH/*
// @run-at      document-start
// ==/UserScript==

document.addEventListener ("readystatechange", FireWhenReady, true);

function FireWhenReady () {
    this.fired  = this.fired || false;

    if (    document.readyState != "uninitialized"
        &&  document.readyState != "loading"
        &&  ! this.fired
    ) {
        this.fired = true;

        document.body.onload  = function () {
            console.log ("body onload intercepted.");
        };
    }
}
于 2012-05-26T20:26:41.847 に答える