私が取り組んでいるプロジェクトには、次の関数があります。
var makePreviewSimulationDiv = function(){
var errorFlag = false;
imgError = function(image){
errorFlag = true;
};
var that = this, proxy = new IAProxy(),
//imageSource = real_image_source,
imageSource = "",
image = that.append('<img class="foo" onerror="imgError(this);
"src=' + imageSource + '></img>')
.children('.sim-ui-preview-sim-image'),
container = image.run(encapsulateImg),
iconsDiv = that.append('<div class="bar"></div>')
.children('.bar');
if (!errorFlag){
image.load(function(){
container.run(zoomMaxWidth)
.run(makeDraggable)
.run(makeZoomable);
});
} else{
alert('image load error!');
}
return that;
};
現在、""
正常に失敗するように、関数が不正な画像srcを取得した場合、または画像srcがない場合に、関数の動作をデバッグしようとするようにimagesrcを設定しています。現在、私のコードはエラーを正しくキャッチしてスローしていますalert('image load error!');
。ただし、imgError
関数のスコープをローカルに設定する場合、つまりコードを次のように変更する場合:
var imgError = function(image){
errorFlag = true;
};
imgError
onerror
画像の読み込み時にトリガーが発生すると、検出されなくなります。で呼び出される関数のスコープは何ですか。グローバルに宣言せずに、内部からアクセスできる状態で、そのスコープonerror
に移動できますか?imgError
errorFlag
imgError