#javascript #jquery #css #google-chrome
#javascript #jquery #css #google-chrome
Вопрос:
Я пытаюсь создать динамический элемент, применить к нему некоторые css
из внешнего css
файла и получить доступ к свойствам с jQuery
помощью . Он работает в Firefox, но не включен Chrome
.
Вот пример :
Файл CSS (myFile.css):
.myClass {
width : 200px;
font-family : Verdana;
font-size : 12px;
}
код javascript в другом файле (myFile.js ):
var title = $("<p/>").attr({id: "myId"}).addClass("myClass").appendTo(content);
var titW = title.width();
var titFSize = parseInt(title.css("fontSize"));
var titFFamily = title.css("fontFamily");
console.log(titW, titFSize, titFFamily); // Firefox returns good values, Chrome does not
Есть идеи?
Спасибо!
Комментарии:
1. Здесь все работает нормально: jsfiddle.net/nathan/jhky5 . Что возвращает Chrome для вас?
2. Я думаю, что файл css загружается недостаточно быстро… Если я использую setTimeout с задержкой в 100 мс и попытаюсь снова получить свойства, это сработает.
Ответ №1:
Хорошо, у меня есть ответ, основанный на вашем комментарии. Вам нужно вложить весь ваш код jQuery в событие DOMReady.
jQuery(document).ready(function ($) {
// jQuery code goes here
});
Это гарантирует, что объектная модель документа (DOM) будет полностью готова перед ее запуском.
Задержка в 100 мс, о которой вы упомянули в своем комментарии, не очень хорошая идея, потому что вы не знаете, что таблица стилей всегда будет загружаться через 100 мс.
Комментарии:
1. Это очень странно. Событие DOM-ready не должно запускаться, пока не загрузится CSS. Можете ли вы изолировать проблему (написать наименьшее подмножество вашей страницы, которое все еще вызывает проблему), а затем поделиться им?