我在我的页面http://www.dynamicdrive.com/dynamicindex4/imagemagnify.htm中使用了 Dynamic Drive Jquery 图像放大镜。
我在两个单独的域上加载了页面 - HTML 是相同的,所有链接(css/js/images)都是我的测试服务器的完整 http 字符串。标题如下所示:
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<script type="text/javascript" src="http://slim.bobpitch.com/DS/js/jquery.magnifier.js">
但是,在一个域上,页面加载完美,但 jquery 不工作,在另一个域上 jquery 工作,但页面格式已损坏。我在第一页遇到的错误是:
Uncaught TypeError: Cannot call method 'magnify' of undefined
指的是这段脚本:
jQuery.fn.imageMagnify=function(options){
var $=jQuery
return this.each(function(){ //return jQuery obj
var $imgref=$(this)
if (this.tagName!="IMG")
return true //skip to next matched element
if (parseInt($imgref.css('width'))>0 && parseInt($imgref.css('height'))>0 || options.thumbdimensions){ //if image has explicit width/height attrs defined
jQuery.imageMagnify.magnify($, $imgref, options)
}
else if (this.complete){ //account for IE not firing image.onload
jQuery.imageMagnify.magnify($, $imgref, options)
}
else{
$(this).bind('load', function(){
jQuery.imageMagnify.magnify($, $imgref, options)
})
}
})
我真是百思不得其解,只有一个狂热的 CSS tinkerer,我对java JavaScript 的了解竟然可以写在一个很小的东西的背面。为什么它适用于一个域而不适用于另一个域?