【发布时间】:2009-08-09 20:13:25
【问题描述】:
这是我的第一个 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 提要用于设置 div #page 的背景。 RSS 提要由 cck 和 views 模块生成。这需要一些额外的模板自定义,但它可以工作。
除了 IE,一切看起来都很棒。我曾尝试使用 Microsoft Script Debugger,但它不是很有帮助(或者我不知道如何使用它)。有一个运行时错误,看起来可能与谷歌分析代码有关(最近才开始出现):
网页错误详情
用户代理:Mozilla/4.0(兼容; MSIE 8.0;视窗 NT 6.1;三叉戟/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729;媒体中心PC 6.0;平板电脑 2.0) 时间戳:2009 年 8 月 9 日星期日 19:58:39 世界标准时间
消息:'a' 为空或不是对象 行: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还有其他选择吗?
【问题讨论】:
-
在我的回答下方查看 cmets - 发现问题
-
redsquare 最终帮助我弄清楚了问题在于为 xml 提要设置的内容类型。它被设置为 application/rss+xml,但 IE 不会解析提要,除非它是 text/xml。 drupal 代码中的覆盖解决了这个问题,但我最终放弃了这种显示图像的方式。相反,我为带有图像的视图制作了模板,以便它只在页面上包含图像时输出不带任何标记的图像路径。
标签: jquery internet-explorer drupal