我曾尝试在Worklight中运行用Sencha Touch编写的Windows Phone 8应用程序。我用以下方式使用了sencha:
<script src="//Microsoft.WinJS.1.0/js/base.js"></script><script src="//Microsoft.WinJS.1.0/js/ui.js"></script><script>
// Define WL namespace.
var WL = WL ? WL : {};
/**
* WLClient configuration variables.
* Values are injected by the deployer that packs the gadget.
*/
WL.StaticAppProps = {
"APP_DISPLAY_NAME": "Cockpit",
"APP_ID": "Cockpit",
"APP_SERVICES_URL": "http:\/\/192.168.99.11:10080\/CockpitProj\/apps\/services\/",
"APP_VERSION": "1.2.1",
"ENVIRONMENT": "windows8",
"LOGIN_DISPLAY_TYPE": "embedded",
"WORKLIGHT_PLATFORM_VERSION": "6.1.0.00.20131219-1900",
"WORKLIGHT_ROOT_URL": "http:\/\/192.168.99.11:10080\/CockpitProj\/apps\/services\/api\/Cockpit\/windows8\/"
};</script>
<script src="worklight/cordova.js"></script>
<script src="worklight/wljq.js"></script>
<script src="worklight/worklight.js"></script>
</head>
<body>
<div class="loadingSpinner bigLoad" id="appLoadingIndicator"></div>
<script src="js/initOptions.js" type="text/javascript"></script>
<script src="js/sencha-touch-all.js" type="text/javascript"></script>
<script src="js/app.js" type="text/javascript"></script>
<script src="js/messages.js" type="text/javascript"></script>
</body>
</html>
如果我运行此代码,我会得到一个例外:
无法添加动态内容。脚本试图注入动态 内容或以前可能动态修改的元素 不安全的。例如,使用innerHTML属性添加脚本或 格式错误的HTML将生成此异常。使用toStaticHTML 过滤动态内容或显式创建元素的方法 使用createElement等方法的属性。欲获得更多信息, 见http://go.microsoft.com/fwlink/?LinkID=247104。
这可以通过sencha-touch-all中的每个sencha调用来解决。
MSApp.execUnsafeLocalFunction(function () {}
这只能是一种解决方法,因为这些sencha调用太多了。
使用Sencha for Windows Phone的一般概念是什么? these steps from Phonegap:
答案 0 :(得分:1)
IMO在Windows Phone开发中没有好办法。如果它是纯粹的Cordova应用程序或基于Worklight的应用程序并不重要。
请参阅以下讨论中的第二个选项。也许您可以将其设置为适用于您的应用所需的所有代码部分:
复制粘贴:
主机强制执行代码将抛出一个访问被拒绝的异常 您尝试设置innerHTML(和outerHTML以及其中一些)的事件 HTML的一个元素,它不符合白名单 已知安全的HTML。您可以通过以下几种方式解决这个问题:
首先在你的字符串上调用
toStaticHTML()
,它应该删除所有不允许的内容使用
WinJS.Utilities.setInnerHTMLUnsafe(element, text)
,这样您就可以将innerHTML设置为您喜欢的任何内容- 醇>
使用
msWWA.execUnsafeLocalFunction
,例如:msWWA.execUnsafeLocalFunction(function(){element.innerHTML = text;})
选项2以3实施。请注意,如果设置 你不能控制的html元素的innerHTML(例如某些东西 你下载了像RSS feed一样的网页,它可能包含脚本 这将是能够访问WinRT并做坏事的原因 2)和3)中的函数名称是有目的的 吓人。