这是我的第一个jQuery脚本,它在Firefox和Chrome中运行良好,但在Internet Explorer中失败。
我使用主题的.info文件加载了两个脚本:
scripts[] = jquery.jfeed.pack.js
scripts[] = script.js
第一个脚本是一个jquery插件,可以为我解析rss提要。第二个脚本如下所示:
var init = jQuery.getFeed({
url: 'panorama.xml',
success:
function(feed)
{
var image = feed.items[0].description;
$('#page').css('background-attachment', 'fixed');
$('#page').css('background-image','url('+image+')');
$('#page').css('background-position', 'center 63px');
$('#page').css('background-repeat', 'no-repeat');
}
});
$(document).ready(init);
效果是包含项目描述中随机图像路径的rss feed用于设置div #page的背景。 rss feed由cck和views模块生成。这需要一些额外的模板自定义,但它可以工作。
除了IE之外,一切看起来都很棒。我尝试过使用Microsoft Script Debugger,但它不是很有帮助(或者我不知道如何使用它)。有一个运行时错误,看起来可能与谷歌分析代码有关(这只是最近才开始出现):
网页错误详情
用户代理:Mozilla / 4.0(兼容; MSIE 8.0; Windows NT 6.1;三叉戟/ 4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0;平板电脑2.0) 时间戳:太阳,2009年8月9日19:58:39 UTC
消息:'a'为null或不是对象 行:1个字符:1代码:0 URI: http://webdev/sites/default/files/js/js_77589ce906350e35d2f4994348346ad7.js
但除此之外,当我查看调试器时,我看到我打算运行的jQuery代码被注释掉了:
;eval(function(p,a,c,k,e,d){e=function(c){return(c<a?'':e(parseInt(c/a)))+
<-- snip -->
; var init = jQuery.getFeed({
url: 'panorama.xml',
success:
function(feed)
{
var image = feed.items[0].description;
$('#page').css('background-attachment', 'fixed');
$('#page').css('background-image','url('+image+')');
$('#page').css('background-position', 'center 63px');
$('#page').css('background-repeat', 'no-repeat');
}
});
$(document).ready(init);
我已经证实在IE8和IE6中已经破解了。你们任何人都可以帮我理解这里有什么问题吗?我仍然担心在没有启用javascript的浏览器中会发生什么,但我认为如果它甚至不能在IE中运行,这是一个没有实际意义的点。
我似乎想出了一个非常黑客攻击的解决方案,以获得随机背景图像的效果。我最初只是在线显示图像,但它需要比页面宽,而不创建滚动条。这个javascript疯狂有没有其他选择?
答案 0 :(得分:0)
您使用的是哪个版本的jQuery。您可能与正在使用的外部脚本具有版本不兼容性(我看到它是一个打包版本,告诉我它已经很老了)并且如果您运行的是jQuery 1.3.2。
您能否解释一下这些版本,并将网址提供给您正在使用的插件。
如果您可以将页面放在网上并使用完整版本的脚本,则可以更轻松地进行调试和发现问题。打包的脚本无法调试。