答えて
Image
とHTMLImageElement
のコンストラクタは同じ関数ではありません。後者のブラウザ間を確実にオーバーライドすることはできません。
序文:はImage
のオーバーライドは、HTMLパーサまたはdocument.createElement
呼び出しによってimg
要素の作成をインターセプトしません。私が知っている限り、それは不可能なクロスブラウザです。あなたはになります doは、ドキュメントにmutation observerで追加されたすべての画像をキャッチします。しかし、それは追加された時点で捕捉され、作成されたものではありません。
しかし:あなたは具体的には、あなたがオーバーライドするので、それを交換する前にImage
の元の値を取り、それを使用したい、それはImage
だと述べました。
例:ES2015では
var originalImage = Image;
Image = function(width, height) {
var result;
console.log("Intercepted");
switch (arguments.length) {
case 0:
result = new originalImage();
break;
case 1:
result = new originalImage(width);
break;
default:
result = new originalImage(width, height);
break;
}
return result;
};
var img = new Image();
img.src = "https://i.stack.imgur.com/rQIK0.jpg?s=64&g=1";
document.body.appendChild(img);
img = new Image(32, 20);
img.src = "https://i.stack.imgur.com/rQIK0.jpg?s=64&g=1";
document.body.appendChild(img);
、あなたのためのオプションだ場合:
const originalImage = Image;
Image = function(...args) {
console.log("Intercepted");
return new originalImage(...args);
};
let img = new Image();
img.src = "https://i.stack.imgur.com/rQIK0.jpg?s=64&g=1";
document.body.appendChild(img);
img = new Image(32, 20);
img.src = "https://i.stack.imgur.com/rQIK0.jpg?s=64&g=1";
document.body.appendChild(img);
'new originalImage(width、height)'は確実に動作しませんか?私は彼らが 'undefined 'を非数字とみなすだろうと思っています。 –
@squint:それは私が守備的なことです。 :-)私は、実装が実際に受け取った議論の数を調べるつもりはないことを知っているわけではありません。(ES2015の普及表記の天国に感謝します.ES2015では素晴らしいImage –
* "ES2015のスプレッド表記のために天に感謝してください..." * For(... args){console.log( "Intercepted");新しいoriginalImage(... args);}; '他にも多くの追加機能があり、ネイティブ構文を実際に使いやすくすることができます。 –
- 1. JavaScript - HTMLImageElementの.onloadプロトタイプ
- 2. Google Guiceでコンストラクタをインターセプト
- 3. インターセプトjavascriptコール
- 4. javascriptの関数をインターセプト
- 5. javascript - base64文字列の代わりにHTMLImageElementオブジェクトを取得
- 6. テキストフィールドへのキーイベントのJavaScriptインターセプト
- 7. Javascriptを - CategorySelectはコンストラクタ
- 8. インターセプトは
- 9. JavaScriptコンストラクタ
- 10. javascriptでinnerHTMLの変更をインターセプトする方法は?
- 11. Javascriptのコンストラクタ
- 12. Javascriptのコンストラクタと
- 13. JavaScriptコンストラクタ引数
- 14. Javascriptのデフォルトのコンストラクタ
- 15. インターセプトAsyncClientHttpRequestFactory
- 16. インターセプト* .aspx
- 17. Javascriptを - スーパークラスのコンストラクタは、引数
- 18. [object HTMLImageElement]が表示されるのはなぜですか?
- 19. インターセプトすべてのボタンは
- 20. Unity 2.0インターセプトを使用してWCFサービスをインターセプトできない
- 21. インターセプト要求
- 22. Android AOSPインターセプトKeyEvent.KEYCODE_HOME
- 23. インターセプトjQueryの
- 24. インターセプトfind_by_attributeメソッドアクティブレコード
- 25. slideToggleインターセプトjQueryの()
- 26. IEインターセプトURL
- 27. ヒットテストのインターセプトUIControlEventTouchUpInside:withEvent:
- 28. AppleScriptインターセプト通知
- 29. AndroidのSMSインターセプト
- 30. インターセプトSOAP応答
それは特に 'Image'は、あなたがしたいですインターセプト? –
はい。それはとにかく特別ですか? – rlib
'HTMLImageElement'はインタフェースであり、クラスではありません。 –