无法使用jQuery访问文档的title元素(IE 8)
我在Internet Explorer 8中看到了这个问题,但在Safari或Firefox中没有。 到目前为止,我还没有在其他IE版本中测试过。
我正在开发自己的jQuery插件,对于这个问题,我已经将它剥离到两个相关的行。
在IE 8中,使用下面的代码, $('title').text()
不执行任何操作。 docTitle
为空,因为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中测试过它,但如果你愿意, 可以查看其他浏览器 。 但为什么不使用document.title
?
尝试使用$('title').html()
,它应该适用于所有浏览器