javascript – 无法使用jQuery访问文档的title元素(IE 8)

我在Internet Explorer 8中看到了这个问题,但在Safari或Firefox中没有.到目前为止,我还没有在其他IE版本中测试过.

我正在开发自己的jQuery插件,对于这个问题,我已经将它剥离到两个相关的行.

在IE 8中,使用下面的代码,$(‘title’).text()不执行任何操作. docTitle为空,因为title为空,就好像< title>,$(‘title’)的jQuery选择器不起作用. (再次,AFAIK,这只是在IE 8中)

(function ($) {
    $.fn.myPlugin = function (options) {

        var title = $('title').text(),docTitle = escape(title);

    };
})(jQuery);

http://jsfiddle.net/sparky672/YMBQ2/

但是,使用下面的纯JavaScript代码,document.title在包括IE 8在内的所有内容中都运行良好…

(function ($) {
    $.fn.myPlugin = function (options) {

        var docTitle = escape(document.title);

    };
})(jQuery);

编辑:

这段代码插件中并不重要.

IE 8中的结果与此相同……

$(document).ready(function () {    
    var title = $('title').text();
    alert(title);
});

只是为了澄清,我并不是坚持使用它.事实上,我通过简单地使用document.title来修复我的插件.如果最初不清楚,我只是问为什么这在IE 8中不起作用.

任何人都可以解释为什么,或者我在这里犯了什么愚蠢的错误

编辑2:

以下是有关此问题的一些jQuery Bug报告

http://bugs.jquery.com/ticket/7025

http://bugs.jquery.com/ticket/5881

http://bugs.jquery.com/ticket/2755

还有数十个人报告了同样的事情.官方的回应是声明,“document.title是唯一可靠的跨浏览器方式,应该使用”并且票证已关闭.你去吧

解决方法

我猜jQuery迭代所有TextNodes并连接它的nodeValue. IE以不同于其他浏览器的方式存储此值.
var title = document.getElementsByTagName('title')[ 0 ];
title.firstChild // This would be the Text-Object with the characterdata of the title
                 // Firefox: [object Text]
                 // IE: null

这应该是你无法使用jQuery.text()获取textContent的原因. title.text似乎是跨浏览器comp.我只在IE 7和Firefox 3.6中测试过它,但是如果你愿意,可以测试you can check the other browser.但为什么不使用document.title?

相关文章

页面搜索关键词突出 // 页面搜索关键词突出 $(function () {...
jQuery实时显示日期、时间 html: &lt;span id=&quot...
jQuery 添加水印 &lt;script src=&quot;../../../.....
中文:Sys.WebForms.PageRequestManagerParserErrorExceptio...
1. 用Response.Write方法 代码如下: Response.Write(&q...
Jquery实现按钮点击遮罩加载,处理完后恢复 思路: 1.点击按...