【问题标题】:Drupal jQuery won't load in IE using $(document).ready()Drupal jQuery 不会使用 $(document).ready() 在 IE 中加载
【发布时间】: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


【解决方案1】:

您使用的是什么版本的 jQuery。如果您正在运行 jQuery 1.3.2,您可能与正在使用的外部脚本版本不兼容(我看到它是一个打包版本,对我来说它很旧)。

您能否解释一下版本并将网址提供给您正在使用的插件。

如果您可以将页面放到网上并使用完整版本的脚本,则更容易调试和发现问题。打包脚本无法调试。

【讨论】:

  • 我已经为我的开发箱设置了端口转发,暂时会启动。你可以在这里看到它:69.141.58.30我正在使用drupal 6.13它带有jQuery 1.2.6,我相信这是jFeed的url:hovinne.com/blog/index.php希望这有帮助!
  • 您添加了一个文档就绪语句来调用 init。当它被解析时,即 init 是未定义的。您看到的错误是当 jQuery 尝试调用文档就绪事件但它不能 .call(undefined)
  • 查看以下屏幕截图gyazo.com/e17983f2c9c9f6aaeddfc1f6fadffcd9.png。可以看到init是未定义的
  • 确定在 getFeed 脚本解析之前设置 init var,因此 init 什么都不是。尝试将 getFeed 脚本放在此文件中或使用 setTimeout 确保在设置 var 之前下载它
  • 我把 jquery.jfeed.pack.js 的内容放在第一行“init = Jquery.getFeed”之前。但它仍在中断。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-10-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-02
相关资源
最近更新 更多