Кросс-браузер (тоже старые браузеры) и простое решение:
var docLoaded = setInterval(function () {
if(document.readyState !== "complete") return;
clearInterval(docLoaded);
/*
Your code goes here i.e. init()
*/
}, 30);
Указывает ли в манифесте вашего приложения, что вы хотите использовать comctl32.dll версии 6? Это одно из требований использования стилей оформления и более современного внешнего вида в Windows XP.
Чтобы создать манифест и позволить вашему приложению использовать стили оформления.
Ссылка на ComCtl32.lib и вызовите InitCommonControls (см. документацию Platform SDK в библиотеке MSDN).
Добавьте файл с именем YourApp.exe.manifest в исходное дерево в следующем формате XML:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
version="1.0.0.0"
processorArchitecture="X86"
name="CompanyName.ProductName.YourApp"
type="win32"
/>
<description>Your application description here.</description>
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="X86"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
</dependentAssembly>
</dependency>
</assembly>
Добавьте манифест в файл ресурсов вашего приложения следующим образом
CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "YourApp.exe.manifest"
Примечание: когда вы добавляете предыдущую запись в ресурс, вы должны отформатировать ее в одну строку. В качестве альтернативы вы можете поместить файл манифеста XML в тот же каталог, что и исполняемый файл вашего приложения. Операционная система сначала загрузит манифест из файловой системы, а затем проверьте раздел ресурсов исполняемого файла. Версия файловой системы имеет приоритет.
Некоторые элементы управления Windows Forms примут новый облик, как только приложение будет привязано к версии 6.0 Comctl32.dll., и как вы можете этого добиться, описано в разделе Использование Визуальные стили Windows XP с элементами управления в Windows Forms
Правильно ли настроен манифест для использования commctl32.dll версии 6 в вашем проекте? В противном случае вы не получите тематические элементы управления.
В более поздних версиях Visual Studio это обычно делается с помощью #pragma, например так (это для x86, скопировано из нового проекта, созданного с помощью VS2005):
#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' language='*'\"")
Если вы добавите это в один из исходных файлов в своем проекте и перестроите, манифест будет сгенерирован компоновщиком и добавлен в ваше приложение. Для других архитектур процессоров вам необходимо изменить значение "processorArchitecture". (Почему VS не может понять это для себя - загадка, которую предстоит разгадать читателю ...)
(Как отмечали некоторые другие, вы также можете вручную сгенерировать манифест и добавить его в файл .rc. Это более длинный текст, но он дает вам полный контроль над манифестом.
У меня есть решение для VC6, но я не уверен, будет ли оно работать в VS 2008.
(также проверьте эту статью , чтобы узнать, что вызывает проблему)
Вот пример простого файла манифеста, который я использовал для решения этой проблемы:
Создайте следующий XML-файл,
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1"
manifestVersion="1.0">
<assemblyIdentity
version="1.0.0.0"
processorArchitecture="X86"
name="Microsoft.Windows.YourApplication"
type="win32"
/>
<description>YourApplication</description>
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="X86"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
</dependentAssembly>
</dependency>
</assembly>
Во-первых, добавим две строки в файл resource.h. Просто скопируйте и вставьте следующее:
#define IDR_MANIFEST 1
#define RT_MANIFEST 24
Теперь откройте файл пользовательских ресурсов приложения. Обычно он находится в каталоге res; расширение по умолчанию .rc2. Добавьте вручную следующую строку:
// Add manually edited resources here...
IDR_MANIFEST RT_MANIFEST MOVEABLE PURE
"res\\ApplicationManifestXMLFile"
Замените ApplicationManifestXMLFile фактическим именем файла (созданным вами XML).