Я наблюдаю эту проблему в Internet Explorer 8, но не в Safari или Firefox. Пока что я не тестировал в других версиях IE.
Я разрабатываю свой собственный плагин jQuery и для этого вопроса я сократил его до двух соответствующих строк.
В IE 8, используя приведенный ниже код, $('title').text()
ничего не делает. docTitle
пустой, потому что title
пустой, как будто селектор jQuery для
, $('title')
не работает. (Опять же, 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);
EDIT:
Не имеет значения, что этот код находится внутри плагина.
Тот же результат в IE 8 с этим...
$(document).ready(function () {
var title = $('title').text();
alert(title);
});
Просто чтобы прояснить, я не настаиваю на использовании этого. На самом деле, я исправил свой плагин, просто используя document.title
вместо этого. Если это не было понятно изначально, я просто спрашиваю, почему это не работает в IE 8.
Может ли кто-нибудь объяснить почему, или какую глупую ошибку я мог здесь совершить?
EDIT 2:
Вот несколько отчетов об ошибках jQuery по этому вопросу
http://bugs.jquery.com/ticket/7025
http://bugs.jquery.com/ticket/5881
http://bugs.jquery.com/ticket/2755
И десятки других, сообщающих о том же. Официальный ответ гласит, "document.title
является единственным надежным кроссбраузерным способом и должен использоваться вместо него" и Тикет закрыт. Итак, вот.