我在我的页面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修补工具,我所知道的 java JavaScript可以写在一个非常小的东西背面。为什么它适用于一个域而不是另一个域?
答案 0 :(得分:2)
检查两台机器上是否有互联网。你能从两台机器上访问http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js吗?出现此错误的原因是,当您尝试调用magnify
时,未加载jQuery。所以你不能在没有jQuery的情况下调用插件。或者如果你在插件之后注册jquery,它将重置已经加载的所有插件
答案 1 :(得分:0)
我认为错误在magnify()调用中意味着放大镜在加载时出现问题
<script type="text/javascript" src="http://slim.bobpitch.com/DS/js/jquery.magnifier.js">
否则你会得到一个错误,抱怨jQuery不是一个函数,所以检查从域中加载该文件没有问题(如果脚本加载正确,请检查firebug)
答案 2 :(得分:0)
检查应用程序是否引用了不同版本的jquery文件