オブジェクトの誤った機能を扱う Web サイトのバグを修正するために、Greasemonkey スクリプトまたは Userscript を作成しようとしています。関数プロトタイプを生成するコード行にブレークポイントを追加し、js コンソールを使用して関数プロトタイプを手動で上書きすることで、問題を手動で修正できます。ただし、コードでこれを行う方法はないと思います。外部スクリプトは html 本文の最後にロードされますが、問題のコードはその同じスクリプト内で実行されます。
この Ft.prototype.J が作成されたときにすぐに変更できるように、何らかの形で JavaScript コードをページに挿入する方法はありますか? 問題は、コードも難読化および縮小されているため、コードの半分が何をしているのかわかりません。
コードの基本的な概要は次のとおりです。
//What does this do?????
function A(a, b) {
function c() {}
c.prototype = b.prototype;
a.f = b.prototype;
a.prototype = new c;
a.prototype.constructor = a
}
function Ft(a, b) {
$.call(this, b);
//some stuff
}
//doing something with jQuery?
A(Ft, $);
Ft.prototype.J = function (a) {
//modifies the DOM content
};
//Code soon after that calls some object.J
コード行 を追加するとFt.prototype.J = function() {} //my own function
、greasemonkey スクリプトに、予想どおり、エラーが返されますFt not defined
。しかし、ロードの最後にその行を実行すると、壊れた関数は既に実行されており、DOM は既に感染しています。
ありがとう。