Google Chrome Frame не работает - PullRequest
5 голосов
/ 02 мая 2011

Привет.Я должен использовать Google Chrome Frame для поддержки определенных функций HTML5, таких как Canvas для Internet Explorer 8. Я реализовал код, но он, похоже, не работает вообще.Часть скрипта, которая проверяет, работает ли пользователь, установивший GCF, отображает наложенный фрейм со ссылкой на установщик.Я установил GCF и даже перезапустил IE8, но, похоже, он вообще не работает.Когда я захожу в Инструменты -> Управление надстройками, он говорит, что он установлен и работает, так что это не может быть проблемой.Я искал вокруг и обнаружил, что вы можете проверить, является ли он активным, щелкнув правой кнопкой мыши на странице, он должен отобразить контекстное меню.Это не происходит для меня, и моя страница просто выдает ошибку, когда я впервые использую элемент canvas.Я использовал метатег, который должен активировать GCF на моей странице, но он, похоже, ничего не делает.

Мой код:

<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="X-UA-Compatible" content="chrome=1">

Эта последняя строка кодадолжен активировать рендеринг GCF.Затем в конце моей страницы:

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/chrome-frame/1/CFInstall.min.js"></script>
</body>
</html>

Это должно запустить скрипт, который проверяет, установлен ли GCF (это работает).Я прикрепляю событие onload к моему окну, которое выполняет функцию, которая содержит:

<body onload="init();" onunload="doLMSFinish();">

function init() {
CFInstall.check({
    mode: "overlay", destination: "http://www.waikiki.com"
});
}

Этот код также используется для проверки, установлен ли GCF (это также работает).

Любойидеи?Я установил GCF, использовал правильный метатег, который должен активировать рендеринг GCF, и поместил этот метатег прямо вверху моей страницы как первый элемент в моем блоке заголовка.Что с ним не так?

РЕДАКТИРОВАТЬ: Я тестирую это на локальной веб-странице.Это причина, почему это не работает?Проект, над которым я работаю, предназначен для запуска локально, а не на стороне сервера.Мне уже пришлось полностью отказаться от поддержки Chrome, поскольку она просто НЕ позволит мне загружать локальные XML-файлы (что является основной функциональностью проекта).

РЕДАКТИРОВАТЬ# 2: Я загрузил свои материалы на FTP, чтобы проверить, будет ли он работать в Интернете, но это все еще не работает.Я даже сделал небольшую тестовую страницу, которая просто содержит базовый html-скелет, метатег для инициализации рендеринга хромированной рамки и один холст, который загружает изображение.Это просто ошибки при загрузке элемента canvas.

<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="X-UA-Compatible" content="chrome=1">
<script type="text/javascript">
    canvasSavannah = document.getElementById("savannahStatic");
    contextSavannah = canvasSavannah.getContext("2d");
    savannah = new Image();
    savannah.src = "savannah_static.png";
    savannah.onload = function() {
        contextSavannah.drawImage(savannah, 0, 0);
    };
</script>
</head>
<body>
    <canvas id="savannahStatic" width="942" height="645">
    </canvas>
</body>
</html>

1 Ответ

2 голосов
/ 11 мая 2011

Посмотрите на javascript defer и async для html5

Запустив вашу тестовую страницу, я заметил, что js пытается инициализироваться до того, как html будет отображаться.Переместите скрипт в конец страницы, чтобы заставить тестовую страницу работать.

<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="X-UA-Compatible" content="chrome=1">
</head>
<body>
    <canvas id="savannahStatic" width="942" height="645">
    </canvas> 
    <script type="text/javascript">
        canvasSavannah = document.getElementById("savannahStatic");
        contextSavannah = canvasSavannah.getContext("2d");
        savannah = new Image();
        savannah.src = "savannah_static.png";
        savannah.onload = function() {
            contextSavannah.drawImage(savannah, 0, 0);
        };
    </script>
</body>
</html>
...