Скрипт Google Apps с ExtJS 4.1

В: Можно ли как-то добавить ExtJS 4 в шаблоны Caja?

Например, при написании инструкций по загрузке в заголовок HTML:

 <link rel="stylesheet" type="text/css" href="http://cdn.sencha.io/ext-4.1.1a-commercial/resources/css/ext-all.css"/>
 <script type="text/javascript">
   document.write("\x3Cscript type='text/javascript' src='http://cdn.sencha.io/ext-4.1.1a-commercial/ext-all.js'>\x3C/script>");
 </script>

Результат примерно такой:

Invalid script or HTML content: http://cdn.sencha.io/ext-4.1.1a-commercial/resources/css/ext-all.css:18+6635 - 6636: Expected <Identifier> not : http://cdn.sencha.io/ext-4.1.1a-commercial/resources/css/ext-all.css:18+6621 - 6652: Skipping malformed content http://cdn.sencha.io/ext-4.1.1a-commercial/resources/css/ext-all.css:18+6621 - 6672: Skipping malformed content http://cdn.sencha.io/ext-4.1.1a-commercial/resources/css/ext-all.css:18+82707 - 82708: Expected <Identifier> not : http://cdn.sencha.io/ext-4.1.1a-commercial/resources/css/ext-all.css:18+82677 - 82724: Skipping malformed content http://cdn.sencha.io/ext-4.1.1a-commercial/resources/css/ext-all.css:18+82677 - 82744: Skipping malformed content http://cdn.sencha.io/ext-4.1.1a-commercial/resources/css/ext-all.css:18+111019 - 111020: Expected <Identifier> not : http://cdn.sencha.io/ext-4.1.1a-commercial/resources/css/ext-all.css:18+111002 - 111036: Skipping malformed content http://cdn.sencha.io/ext-4.1.1a-commercial/resources/css/ext-all.css:18+111051 - 111052: Expected <Identifier> not : http://cdn.sencha.io/ext-4.1.1a-commercial/resources/css/ext-all.css:18+111037 - 111068: Skipping malformed content http://cdn.sencha.io/ext-4.1.1a-commercial/resources/css/ext-all.css:18+111002 - 111088: Skipping malformed content http://cdn.sencha.io/ext-4.1.1a-commercial/resources/css/ext-all.css:18+200996 - 200997: Expected <Identifier> not : http://cdn.sencha.io/ext-4.1.1a-commercial/resources/css/ext-all.css:18+200982 - 201013: Skipping malformed content http://cdn.sencha.io/ext-4.1.1a-commercial/resources/css/ext-all.css:18+200982 - 201033: Skipping malformed content http://cdn.sencha.io/ext-4.1.1a-commercial/resources/css/ext-all.css:18+217948 - 217949: Expected <Identifier> not : http://cdn.sencha.io/ext-4.1.1a-commercial/resources/css/ext-all.css:18+217931 - 217965: Skipping malformed content http://cdn.sencha.io/ext-4.1.1a-commercial/resources/css/ext-all.css:18+217931 - 217985: Skipping malformed content http://cdn.sencha.io/ext-4.1.1a-commercial/resources/css/ext-all.css:18+219058 - 219075: Not a valid uri: 'url(#default#VML)' http://cdn.sencha.io/ext-4.1.1a-commercial/resources/css/ext-all.css:18+219049 - 219075: Skipping malformed content HtmlOutput:11+132 - 12+1: Unclosed string.

Только что заметил, что ошибки проверки Caja связаны с CSS, но пока объект Ext не может быть создан - это не имеет значения. Похоже, что только jQuery и jQueryUI доступны в качестве предварительных запросов: Код Google. Если jqGrid по крайней мере будет работать, это может быть альтернативой (но поскольку я намерен использовать ExtJS, я бы предпочел просто переключить среду на что-то более совместимое).

Это HTML-приложение Maestro просто говорит: «Не удалось загрузить ext-all.js». Не пытался включить библиотеку «локально» на Диске, но я предполагаю, что может быть применена та же кастрация JS.

Безопасность для встраивания сторонних скриптов в целом неплохая идея -

Но если функции безопасности нельзя обойти, это мешает инновациям.

Вероятно, следует просто предположить, что он не поддерживается, и двигаться дальше; просто ничего не осталось для таких проприетарных решений - они могли бы построить свой собственный интернет, но без меня.


person Martin Zeitler    schedule 10.02.2013    source источник
comment
Можете ли вы опубликовать html, который вы используете для включения скриптов/таблиц стилей?   -  person Phil Bozak    schedule 10.02.2013


Ответы (1)


Я работаю над Каей. Я не рассматривал ExtJS в частности, но обычная причина проблем с новой средой JS заключается в том, что есть какая-то небольшая функция или крайний случай, который Caja не реализует точно. Веб-платформа огромна, и мы должны отдавать приоритет функциональности, которую люди ожидают использовать, поскольку фраза «внедрите все, прежде чем продолжить» непрактична.

Я рекомендую вам отправить запрос на улучшение для поддержки ExtJS. Было бы особенно полезно, если бы вы изучили CSS ExtJS и определили, какую его часть Caja отклоняет (например, сравнивая ошибку с номерами строк в неминифицированной версии или, при необходимости, удаляя части до тех пор, пока они не будут отклонены), поэтому что мы можем сосредоточиться на добавлении необходимых функций.


Обратите внимание, что вы не должны ожидать, что document.writeing элемент <script> сработает; динамически определенные сценарии, как правило, недоступны в текущем развертывании Caja в Google Apps Script. Вместо этого используйте буквальный элемент <script> в HTML. Вероятно, поэтому вы видите только ошибки, связанные с CSS, и ни успехов, ни ошибок самого ExtJS. (Я только что записал, что мы должны выдавать сообщение об ошибке в этот случай.)

person Kevin Reid    schedule 12.02.2013
comment
Я предполагаю, что основная проблема заключается в темах, скомпилированных с помощью компаса, с тегами @, и что Caja всегда пытается предоставить самую лучшую структуру. Скорее всего, я не единственный, кто хотел бы, чтобы эта функция стала реальностью, но, вероятно, то, как работают Caja и ExtJS, невозможно полностью объединить (что, безусловно, больше ограничивает, чем полезно). Было бы здорово, если бы Google мог предоставить любой доверенный CDN, который позволил бы определенные переопределения. Тем временем я попытаюсь запустить jgGrid — просто потому, что мне нужна сетка данных, а не электронная таблица. Приму ваш ответ, потому что объяснение уже помогает. - person Martin Zeitler; 14.02.2013
comment
Для меня понятно, что базовая функциональность намного важнее, чем сторонняя поддержка. Но, пожалуйста, проверьте компоненты, которые он предоставляет один раз: sencha.com/products/extjs/examples - как вы можете видеть, все это очень связано с бизнес-приложениями. - person Martin Zeitler; 14.02.2013
comment
@syslogic Дело не в «доверии» — весь код, который вы загружаете, включая такие вещи, как jQuery, находится в одной среде. У нас просто нет 100% точной эмуляции того, что делает браузер за пределами Caja — мы бы хотели, но пока этого нет. «Бизнес-приложения» не являются проблемой; просто вы первый человек (я слышал), который просит ExtJS. Почти все хотят запускать jQuery; некоторые хотели бы запустить Angular или Prototype; и так далее. Я действительно рекомендую вам сделать запрос на наш трекер ошибок, чтобы посмотреть на ExtJS, как я описал выше; это поможет определить наши приоритеты. - person Kevin Reid; 14.02.2013
comment
Если я действительно первый, кто спрашивает, предположительно, никто еще не представлял себе потенциал, который может предоставить эта структура. В настоящее время я просто могу запускать что-то с веб-сервера и экспортировать в gSheet через Drive API... но я предпочитаю интегрированные решения, а не распределенные. В ExtJS есть даже переходник на плагин jQuery. - person Martin Zeitler; 14.02.2013