我正在使用VS2012和Javascript开发一个metro应用程序
我想重置文件输入的内容:
<input type="file" id="uploadCaptureInputFile" class="win-content colors" accept="image/*" />
Run Code Online (Sandbox Code Playgroud)
我该怎么办?
由于听起来jQuery是Metro JavaScript应用程序的一个选项,我开始期待Windows 8开发.我安装了Visual Studio 2012 Express RC并启动了一个新项目(空模板和网格模板都有同样的问题).
我制作了jQuery 1.7.2的本地副本,并将其添加为脚本参考.
<!-- SomeTestApp references -->
<link href="/css/default.css" rel="stylesheet" />
<script src="/js/jquery-1.7.2.js"></script>
<script src="/js/default.js"></script>
Run Code Online (Sandbox Code Playgroud)
不幸的是,只要我运行生成的应用程序,它就会抛出一个控制台错误:
HTML1701:无法添加动态内容'a'脚本试图注入可能不安全的动态内容或先前动态修改的元素.例如,使用innerHTML属性添加脚本或格式错误的HTML将生成此异常.使用toStaticHTML方法过滤动态内容,或使用createElement等方法显式创建元素和属性.有关详细信息,请参阅 http://go.microsoft.com/fwlink/?LinkID=247104.
我在一个非缩小版本的jQuery中打了一个断点,发现了令人讨厌的行:
div.innerHTML = " <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/>";
Run Code Online (Sandbox Code Playgroud)
显然,Metro应用程序的安全模型禁止以这种方式创建元素.此错误不会对用户造成任何直接问题,但考虑到其位置,我担心它会导致jQuery中的功能发现测试失败,而不应该.
我绝对希望jQuery $.Deferred能让所有事情变得更轻松.我宁愿能够使用选择器引擎和事件处理系统,但如果必须的话我会没有它们.
如何让最新的jQuery与Metro开发很好地配合?
在尝试使用新的Visual Studio 11预览后,我认为最有趣的问题是如何在浏览器中运行基于javascript的新应用程序并进行最少的更改?那可能吗?我想支持javascript的想法是为了更好的跨平台应用程序,我是对的吗?
我理解一些winJs代码调用WinRT,但是我们也可以在基于Web的应用程序上使用一些WinJS代码吗?
我有一个CSS3 flexbox的问题.
如果我将flexbox元素overflow设置为并min-width为子元素设置值,则父元素上的右边填充将丢失?这在所有支持浏览器上都是一致的.
这是一个错误的例子.如果滚动到容器的右侧,您将看到最后一个孩子难以抵靠容器的右边缘,而不是遵守填充值.
.outer {
display: flex;
flex-direction: row;
width: 300px;
height: 80px;
border:1px #ccc solid;
overflow-x: auto;
padding: 5px;
}
.outer > div {
flex: 1 1 auto;
border: 1px #ccc solid;
text-align: center;
min-width: 50px;
margin: 5px;
}Run Code Online (Sandbox Code Playgroud)
<div class="outer">
<div>text1</div>
<div>text2</div>
<div>text3</div>
<div>text4</div>
<div>text5</div>
<div>text6</div>
<div>text7</div>
<div>text8</div>
<div>text9</div>
<div>text10</div>
</div>Run Code Online (Sandbox Code Playgroud)
有谁知道这是为什么以及如何纠正它?我搞砸周围padding,并margin在没有成功不同的组合值.
我正在开发一个简单的Windows 8应用程序,我需要从网站上获取一组数据.我正在使用WinJS.xhr()来检索此数据,该数据返回Promise.然后我将一个回调传递给这个Promise的.then()方法,该方法为我的回调提供异步调用的返回值..then()方法返回另一个Promise,为其提供我的回调返回的值.这种查询的基本结构如下:
WinJS.xhr({ url: "http://www.example.com/" }).then(
function callback( result_from_xhr )
{
//do stuff
return some_value;
}).then(
function secondcallback( some_value )
{
//do stuff
});
Run Code Online (Sandbox Code Playgroud)
但是,在我的情况下,我可能需要根据第一个查询返回的数据进行额外的数据查询,并且可能还需要更多查询,具体取决于THAT数据......等等,递归查询.
我需要一种方法对其进行编码,以便在所有递归完成之前不执行最终的.then(),类似于:
function recurse() {
return WinJS.xhr({ url: "http://www.example.com/" }).then(
function callback( result_from_xhr )
{
if( result_from_xhr == something )
{
recurse();
}
});
}
recurse().then(
function final()
{
//finishing code
});
Run Code Online (Sandbox Code Playgroud)
问题是,当然,只要第一级递归完成,就会调用整理代码.我需要一些方法来在回调中嵌套新的promise和旧的promise.
我希望我的问题很清楚,我真的不确定如何解释它,坦率地说,异步递归代码的想法让我头疼.
背景
我们正在使用System Center 2012在运行Windows 8 Enterprise x64的领域中将Windows 8 Metro风格的应用程序部署到三星平板电脑.平板连接到域并具有持久的DirectAccess连接,允许System Center将应用程序和更新推送到设备.
我们必须将我们的应用程序部署到现场可能有数百台设备,这就是我们进入System Center路线的原因.使用组策略在每个设备上安装代码签名证书.要部署应用程序,只需提供包输出并指定要安装它的设备集合.该应用程序只需几分钟即可显示在设备上.
我们遇到的问题是,当System Center部署我们的应用程序时,SQLite依赖关系丢失,我们的数据访问都不起作用.
关于我们的项目
我们的应用程序是一个使用SQLite作为后端的WinJS应用程序.但是,我们所有的数据访问代码都在WinJS项目引用的C#WinMD项目中.我们使用sqlite-net库与SQLite交谈 - 我们在C#项目中包含了它的源代码.
在Visual Studio中,我们安装了SQL Run for Windows Runtime扩展,如Tim Heuer的文章中所述.Metro应用程序引用了这个.
使用其他部署方法进行测试
当您在本地调试或运行它时,应用程序的SQLite数据访问工作正常 - 在Debug/Release和x86/x64中.
应用程序打包过程提供了一个PowerShell脚本,您可以根据需要使用该脚本来安装应用程序和开发人员许可证.使用PowerShell脚本安装我们的应用程序时,SQLite数据访问也可以正常工作.通过打包和安装应用程序的Debug/Release和x86/x64版本来验证这一点.
故障排除
当应用程序首次尝试使用SQLite时,我们会看到一个关于它无法找到sqlite3.dll的异常.
我们已经尝试/验证了以下内容:
更新 问题是System Center在部署SQLite库所需的Visual C++运行时库依赖项时遇到问题.所以不幸的是,这不再是一个编程问题了.我们正在获得一些帮助,我将发布修复程序.
我正在尝试为WinJS中的自定义事件编写事件处理程序.我不太确定这在IE中是如何工作的 - 我正在创建一个自定义事件并调度它 -
var eventObject = document.createEvent("CustomEvent");
eventObject.initCustomEvent("dropbomb", true, true, null);
this._element.dispatchEvent(eventObject);
Run Code Online (Sandbox Code Playgroud)
我的经纪人是 -
this._element.addEventListener("logtelemetry", function () {
console.log("boom");
});
Run Code Online (Sandbox Code Playgroud)
我可以确定将同步调用处理程序而不是稍后调用吗?如果是,那么证据是什么.
我有一个在Windows Phone 8.1设备上运行的Windows Phone应用程序,我正在使用(WNS)向设备发送推送消息.提供推送消息已经工作了大约8天,直到我在响应中收到类似于这些的WNS标头:Windows Push Notification Services
X-WNS-NOTIFICATIONSTATUS: dropped
X-WNS-STATUS: dropped
X-WNS-ERROR-DESCRIPTION: Blocked channel URL
X-WNS-MSG-ID: 2DC1361376C2827E
X-WNS-DEBUG-TRACE: DB5SCH101121937
Run Code Online (Sandbox Code Playgroud)
我没有更改推送服务器实现,也没有更改Windows Phone设备上的代码.两个组件的构建几乎没有变化.我在一个工作日结束时回家了,第二天,我进行了一个简单的测试,只是为了呈现那个特定的错误.我尝试了以下尝试解决问题:
每个都没有成功.关于WNS的文档很少,我没有其他支持渠道,所以我很难过.可能导致此特定错误的原因"Blocked channel URL",或者,我该如何解决?
昨天我开始使用JavaScript开发我的第一个Metro风格应用程序.我在Visual Studio 2011中使用了其中一个模板.这个项目模板附带了一堆生成的代码,这些代码在很大程度上依赖于WinJS.整个结构提醒ASP.NET的视图和相应的Code Behind文件.还有一个navigator.js文件,负责视图之间的导航.整个数据驻留在data.js中,可以使用不同的函数进行检索.
我使用backbone.js,我发现它的概念像MVC结构和路由非常酷.我的问题基本上是你是否可以使用backbone.js实现这样的Metro风格应用程序?我可以消除WinJS并从头开始吗?我应该尝试将backbone.js集成到当前结构中吗?那会是什么样子?使用第三方JavaScript框架有任何限制吗?我应该保留生成的结构吗?
使用JavaScript开发Metro Style应用程序的最佳实践和模式是什么?
谢谢
正如我在这里发现的那样,当我打电话给服务器以cookie的形式请求身份验证时,响应中的cookie由底层的metro框架自动处理.
但是,这意味着我无法访问cookie,因此,当应用程序暂停供以后使用时,无法存储它.我们如何在地铁框架中存储cookie信息?
非常感谢所有帮助,我总是接受答案!