0

我的代码在 Chrome 或 Firefox 中运行时按预期工作。然而,在 Internet Explorer 中出现错误。不幸的是,调试器只从调用堆栈中获取顶层,这意味着它将获取我自己脚本中第一个函数调用的行号,以及压缩 jQuery 的 4 行中的第 3 行。此外,错误令人困惑:

对象不支持此属性或方法

在 jQuery 源中链接时看起来很奇怪;这两个错误都不适用于调用对象方法的行。在我的脚本中调用的函数作为错误的行号给出如下:

$('title').text('Student accommodaton in '+loc.title);
$('fieldset.search').data('loc',loc.loc_id).find('p.locs').slideUp().end().find('ul.blurb').hide();
$('nav.top').find('li.index a').attr('href',loc.url)
.end().find('p.user').addClass('show');
$('header.title').find('h2').each(function(loc){
    return function(){
        $(this).data('text',$(this).text()).text('Student accommodation in '+loc.title);
    }
}(loc))
.end().find('p').fadeIn();
$('section.register h3:first').textPrepend('Scroll down and ');
4

1 回答 1

0

原来错误是由以下代码引起的

$('title').text('Student accommodaton in '+loc.title);

我通过一次删除一行发现了这一点,因为我使用的是没有像样的调试软件的 IETester。而下面的代码:

$('p').text().text('Test');

将正确指示返回的对象(文本字符串)没有方法.text(),似乎 using$('title')返回一个更抽象的错误,因为 jQuery 尝试应用该方法。因此错误的行号是错误的,因为它传播回函数堆栈。

简而言之,在更改标题时使用

document.title='Test';

如果您在 jQuery 源代码中出现错误,请首先查找<head>您可能正在使用的任何奇怪的选择器或元素选择器。

于 2012-09-18T15:41:49.673 回答