解決できない問題に少し悩んでいて、インターネットやこのサイトで調査を行ったのですが、質問の答えが見つかりません。
つまり、基本的には変更できないjavascriptファイルがあるので、呼び出されたときにメソッドをキャッチしてオーバーライドする別のjavascriptファイルがあります。
通常、私はそれがどのように機能するかを知っており、すでに関数のオーバーライドを行っていますが、この問題を解決する方法がわかりません。
私は非常に大きなスクリプトを持っていますが、そのほんの一部を示します。
Microsoft.Office.Server.Ajax.NavResizer.prototype = {
$6: null,
$7: null,
......
$20:function ($p0) {
if (this.$1E) {
$p0.preventDefault();
}
},
$21: function ($p0) {
var $0 = $p0.target;
this.$1F = ($0 === this.$A);
if (this.$1F || $0 === this.$B) {
this.$1E = $0;
this.$18 = $p0.clientX;
this.$19 = $p0.clientY;
Sys.UI.DomEvent.removeHandler(this.$1E, 'mousedown', this.$12);
var $1 = document.body; Sys.UI.DomEvent.addHandler($1, 'mouseup', this.$13);
Sys.UI.DomEvent.addHandler($1, 'mousemove', this.$14);
$1.style.cursor = (this.$1F) ? 'e-resize' : 'n-resize';
this.$1A = this.get_$42();
this.$1B = this.get_$43();
$1.focus();
Sys.UI.DomEvent.addHandler($1, 'selectstart', this.$15);
$p0.preventDefault();
}
},
$22: function ($p0) {
this.$34($p0);
var $0 = document.body;
Sys.UI.DomEvent.removeHandler($0, 'mouseup', this.$13);
Sys.UI.DomEvent.removeHandler($0, 'mousemove', this.$14);
Sys.UI.DomEvent.addHandler($0, 'selectstart', this.$15);
$0.style.cursor = 'default';
Sys.UI.DomEvent.addHandler(this.$1E, 'mousedown', this.$12);
this.$1E = null;
},
$23: function ($p0) {
this.$34($p0);
},
$24: function ($p0) {
this.$26();
},
....
基本的にこれはスクリプトの一部です:それで私が関数をオーバーライドしたいとしましょう:$ 22:別のjavascriptファイルのスクリプトの関数($ p0)、どうすればいいですか?
助けていただければ幸いです。
小さな更新、いくつかの良い例が提供されましたが、それらは機能していません。このスクリプトを実行する環境はSharePointです。通常、オーバーライドしたときは、次の方法を使用しました。
var oldFixRibbonAndWorkspaceDimensions = window.FixRibbonAndWorkspaceDimensions;
window.FixRibbonAndWorkspaceDimensions = function () {
this.MyFixRibbonAndWorkspaceDimensions();
};
function MyFixRibbonAndWorkspaceDimensions(){...}
また、スクリプトをロードするタイミングは問題ではありませんでした。この関数は、デフォルトの関数が呼び出されたときにのみ呼び出されたためです。ちょうど同時に。しかし、ここで提供された例では、関数はdocument.ready()で実行しようとしています。