エラーは jquery.maximage.min.js から発生しているようです。完全なバージョンはこちら: https://github.com/akv2/MaxImage/blob/master/lib/js/jquery.maximage.js
何を探すべきかの手がかりの 1 つは、"use strict" ディレクティブがあることです。これは、strict モードをサポートしないブラウザーで実行することを意図したコードには適していません。それを使用する正当な理由はないようです。ヒップだけだと思います。
UA 文字列に基づくブラウザー スニッフィングがいくつかあります (良い兆候ではありません)。
if($.browser.msie){
// Stop IE from continually trying to preload images that we already removed
document.execCommand("Stop", false);
}
とにかく、エラーは226行目あたりのコードに関連しているようです:
for(var j in $.Slides) {
// Determine content (if container or image)
if($.Slides[j].content.length == 0){
c = '<img src="' + $.Slides[j].url + '" />';
} else {
c = $.Slides[j].content;
}
...
}
に値が割り当てられている場所を探すと、Slides[j].content
625 行目に次のように表示されます。
$.Slides = Utils.construct_slide_object();
そしてconstruct_slide_object
次のとおりです。
construct_slide_object: function() {
var obj = new Object(),
arr = new Array(),
temp = '';
$self.children().each(function(i) {
var $img = $(this).is('img') ? $(this).clone() : $(this).find('img').first().clone();
それはただの長い書き方$('<img />')
ですか?
// reset obj
obj = {};
では、なぜeach
関数外のオブジェクトとして初期化するのでしょうか?
// set attributes to obj
obj.url = $img.attr('src');
obj.title = $img.attr('title') != undefined ? $img.attr('title') : '';
それを書くには長い道のりです:
obj.title = $img.attr('title');
sinceattr
は常に文字列を$img.attr('title') != undefined
返し、空の文字列を返した場合にのみ true になります。
obj.alt = $img.attr('alt') != undefined ? $img.attr('alt') : '';
obj.theclass = $img.attr('class') != undefined ? $img.attr('class') : '';
obj.styles = $img.attr('style') != undefined ? $img.attr('style') : '';
obj.orig = $img.clone();
obj.datahref = $img.attr('data-href') != undefined ? $img.attr('data-href') : '';
obj.content = "";
// Setup content for within container
if ($(this).find('img').length > 0) {
この短いコードで使用されたのは、これで 3 回目です。
if($.BrowserTests.cssBackgroundSize) {
$(this).find('img').first().remove();
そして 4 番目は、$(this)
7 回使用されます。
}
obj.content = $(this).html();
}
// Stop loading image so we can load them sequentiallyelse{
$img[0].src = "";
// Remove original object (only on nonIE. IE hangs if you remove an image during load)
if ($.BrowserTests.cssBackgroundSize) {
これは、ある種のブラウザーの推論のようです。backgrounsize テストが false を返す場合、それは IE に違いありません。
$(this).remove();
}
// attach obj to arr
arr.push(obj);
});
if(config.debug) {
debug(' - Slide Object - ');
debug(arr);
}
return arr;
},
ブーツをいっぱいにしてください。:-)