IEで”エラー ‘undefined’は null またはオブジェクトではありません。”のエラー

・IEで”エラー ‘undefined’は null またはオブジェクトではありません。”のエラーメッセージが出る。

これって、javaスクリプトのエラーらしい。・・・が詳しいことはよくわからない。
動作に全く支障はないが、どうやって回避させるか・・。
エラー部分を特定しなくてはならないね。

ソースを部分的にカットしてどの命令でエラーが出るか、調べないといけないな。cut&try!

と、その前に、ページをIE8で見てみると、どうやら imgpreview.js がエラー元らしい。

/* * imgPreview jQuery plugin * Copyright (c) 2009 James Padolsey
 * j@qd9.co.uk | http://james.padolsey.com * Dual licensed under MIT and GPL.
 * Updated: 09/02/09
 * @author James Padolsey
 * @version 0.22
 */
 (function(c){c.expr[':'].linkingToImage=function(a,g,e){return!!(c(a).attr(e[3])&&c(a).attr(e[3]).match(/\.(gif|jpe?g|png|bmp)$/i))};
c.fn.imgPreview=function(j){var b=c.extend({imgCSS:{},distanceFromCursor:{top:10,left:10},preloadImages:true,onShow:function(){},onHide:function(){},onLoad:function(){},containerID:'imgPreviewContainer',containerLoadingClass:'loading',thumbPrefix:'',srcAttr:'href'},j),d=c(' ').attr('id',b.containerID).append('').hide().css('position','absolute').appendTo('body'),f=c('img',d).css(b.imgCSS),h=this.filter(':linkingToImage('+b.srcAttr+')');
function i(a){return a.replace(/(\/?)([^\/]+)$/,'$1'+b.thumbPrefix+'$2')}if(b.preloadImages){(function(a){var g=new Image(),e=arguments.callee;
g.src=i(c(h[a]).attr(b.srcAttr));
g.onload=function(){h[a+1]&&
e(a+1)}})(0)}h.mousemove(function(a){d.css({top:a.pageY+b.distanceFromCursor.top+'px',left:a.pageX+b.distanceFromCursor.left+'px'})}).hover(function(){var a=this;
d.addClass(b.containerLoadingClass).show();
f.load(function(){d.removeClass(b.containerLoadingClass);f.show();
b.onLoad.call(f[0],a)}).attr('src',i(c(a).attr(b.srcAttr)));b.onShow.call(d[0],a)},function(){d.hide();
f.unbind('load').attr('src','').hide();b.onHide.call(d[0],this)});
return this}})(jQuery);

/* * imgPreview jQuery plugin * Copyright (c) 2009 James Padolsey * j@qd9.co.uk | http://james.padolsey.com * Dual licensed under MIT and GPL. * Updated: 09/02/09 * @author James Padolsey * @version 0.22 */ (function(c){c.expr[':'].linkingToImage=function(a,g,e){return!!(c(a).attr(e[3])&&c(a).attr(e[3]).match(/\.(gif|jpe?g|png|bmp)$/i))}; c.fn.imgPreview=function(j){var b=c.extend({imgCSS:{},distanceFromCursor:{top:10,left:10},preloadImages:true,onShow:function(){},onHide:function(){},onLoad:function(){},containerID:'imgPreviewContainer',containerLoadingClass:'loading',thumbPrefix:'',srcAttr:'href'},j),d=c(' ').attr('id',b.containerID).append('').hide().css('position','absolute').appendTo('body'),f=c('img',d).css(b.imgCSS),h=this.filter(':linkingToImage('+b.srcAttr+')'); function i(a){return a.replace(/(\/?)([^\/]+)$/,'$1'+b.thumbPrefix+'$2')}if(b.preloadImages){(function(a){var g=new Image(),e=arguments.callee; g.src=i(c(h[a]).attr(b.srcAttr)); g.onload=function(){h[a+1]&& e(a+1)}})(0)}h.mousemove(function(a){d.css({top:a.pageY+b.distanceFromCursor.top+'px',left:a.pageX+b.distanceFromCursor.left+'px'})}).hover(function(){var a=this; d.addClass(b.containerLoadingClass).show(); f.load(function(){d.removeClass(b.containerLoadingClass);f.show(); b.onLoad.call(f[0],a)}).attr('src',i(c(a).attr(b.srcAttr)));b.onShow.call(d[0],a)},function(){d.hide(); f.unbind('load').attr('src','').hide();b.onHide.call(d[0],this)}); return this}})(jQuery);


この中の以下の命令文に問題があるらしいことがわかった。

{return a.replace(/(\/?)([^\/]+)$/,’$1’+b.thumbPrefix+’$2′)}

・・が、はて? この命令は一体なんなのでしょう・・?
ここで「思考停止」! ・・フランケンだぁ~。

追記:
その後、エラーはサムネイル画像のマウスオーバーでプリビューさせる部分ということがわかった。それを実行してるのがこのジャバスクリプトらしい。
そこで、テーマ FotoFolio Option から、JS RollOver OFF にチェックマークを入れたところ、エラーは出なくなった。
マウスオーバーで出る画像は必要ないしね。ま、これで一件落着(?)ということにしておきましょう!

追記の追記:
なんと!  JS RollOver OFF したら、トップページのスライドショーの影の位置が狂ってしまう。むふふふ、もう、わかんない!
IE8 だとエラー表示にならないので、ま、いいっかー! っつーことで元に戻しました。

——–
・「過去帳」のgooブログのPDFデータの移行完了。