Я работаю над веб-сайтом, который использует Клиентскую библиотеку Google JavaScript, чтобы загрузить некоторые API, которые отображаются через Виртуальные конечные точки Google. Конечные точки были разработаны на Python, но я не уверен, что это фактор. Все работает отлично в Chrome, Firefox и Safari, но в Internet Explorer 10 я получаю эту ошибку:
SCRIPT5007: Unable to get property 'value' of undefined or null reference
proxy.html, line 7 character 51
Я загружаю клиентскую библиотеку, используя код, похожий на этот предложенный Google в своей документации:
<script type="text/javascript">
Oversee.Init();
function init() {
console.log("starting to load endpoints");
gapi.client.load("marketplace", "1", function() {
console.log("finished loading endpoints");
}, "//" + window.location.host + "/_ah/api");
}
</script>
<script type="text/javascript" src="https://apis.google.com/js/client.js?onload=init"></script>
На консоли выводится следующее:
starting to load endpoints
SCRIPT5007: Unable to get property 'value' of undefined or null reference
proxy.html, line 7 character 51
Обратите внимание, что строка "конечные конечные точки загрузки" никогда не выводится.
После довольно-печатной обработки этот код в proxy.html выглядит так, в частности, document.getElementById('root').value
, поскольку document.getElementById('root')
имеет значение null или undefined.
gapi.load('googleapis.proxy', {
callback: function () {
return window['googleapis']['server']['initWithPath']
.call(this, document.getElementById('root').value);
},
config: {
// snipped
}
});
Я заметил, что если я перезагружу страницу, api загрузится успешно, со следующим выходом в консоли:
starting to load endpoints
finished loading endpoints
Все вышеизложенное происходит как при использовании локального сервера разработки, так и при использовании приложения, размещенного в экземплярах приложений Google App Engine.
Удалось ли кому-либо успешно позвонить в Google Cloud Endpoints из Internet Explorer 10? Если да, то что мне не хватает в моем коде?
РЕДАКТИРОВАТЬ: Проблема также происходит с примером Google для веб-приложений Cloud Endpoints. Я разместил его здесь: https://cloud-endpoints-demo.appspot.com, и такая же ошибка возникает при запуске в Internet Explorer 10.
РЕДАКТИРОВАТЬ 2: Я создал проблему здесь: https://code.google.com/p/googleappengine/issues/detail?id=10700
РЕДАКТИРОВАТЬ 3: Проблема также встречается в примере Google TicTacToe для облачных конечных точек. Я разместил его здесь: https://cloud-endpoints-tictactoe.appspot.com; как и в случае с другим демо, он отлично работает на Chrome и Safari, но с Internet Explorer 10 не работает.
EDIT 4:. Я более подробно рассмотрел прокси .html, который Google обслуживает. Ниже тега script, который вызывает ошибку, есть это тело, которое включает текстовое поле с идентификатором "root":
<body>
<textarea id="root" style="display:none">/_ah/api</textarea>
<div id="lcsclient" style="position:absolute;left:-10000px;"></div>
</body>
Итак, похоже, Google должен внести некоторые изменения в proxy.html, чтобы гарантировать, что документ загрузился до того, как javascript будет выполняться в Internet Explorer. Правильно ли я?