我按照qooxdoo文档中的Web Fonts教程向Font.js添加了一个Web字体,但我注意到Chrome的Developer Console中有一个警告:
我的代码如下:
/* ************************************************************************
#asset(myApp/fonts/*)
************************************************************************ */
qx.Theme.define("myApp.theme.Font",
{
extend : qx.theme.simple.Font,
fonts :
{
"silkscreen" :
{
size: 8,
lineHeight: 1,
family: [ "silkscreen", "Tahoma" ],
sources:
[
{
family: "Silkscreen",
source:
[
"myApp/fonts/slkscr-webfont.eot",
"myApp/fonts/slkscr-webfont.ttf",
"myApp/fonts/slkscr-webfont.woff",
"myApp/fonts/slkscr-webfont.svg#silkscreen"
]
}
]
}
}
});
Run Code Online (Sandbox Code Playgroud)
如何解决浏览器警告?
我目前正在重新思考qooxdoo JavaScript框架的对象处理处理.
看看下图(A目前在范围内):
假设我们要删除B.通常,我们会删除所有对象之间的所有引用.这意味着我们在示例中切断了连接1到5.这真的有必要吗?
至于我已经阅读这里,浏览器使用的标记-清除算法.在这种情况下,我们只需要切割参考1(与范围的连接)和5(与DOM的连接),这可能会更快.
但我可以确定所有浏览器都使用标记和扫描算法或类似的东西吗?
我对Qooxdoo感兴趣是一个可能的Web开发框架.我已下载SDK并将其安装在我PC上的中央位置,因为我希望在多个项目中使用它.我使用该create-application.py
脚本创建了一个新的测试应用程序,并将所有生成的文件添加到我的版本控制系统中.
我希望能够与其他PC上的其他开发人员合作.他们可能将SDK安装在不同的位置.在该的Qooxdoo自动生成的文件似乎包含两个SDK路径config.json
和generator.py
:如果SDK路径移动,该generator.py
脚本停止工作. generator.py
似乎没有太大的问题,因为它寻找config.json
更新的路径,但我不知道如何最好地处理config.json
.
到目前为止我唯一想到的选择是:
如果生成脚本存在,方法1将是理想的; 方法2真的很讨厌; 我无法让方法3工作,方法4有点乱,因为它意味着SDK的多个副本散落在这个地方.
Android SDK似乎很好地解决了这个问题(使用方法1),SDK路径在自己的文件中,并带有自动生成该文件的脚本.据我所知,Qooxdoo提供了许多其他重要信息,config.json
自动生成该文件的唯一方法是创建一个新项目.
有没有更好的/推荐的方法来处理这个?
伙计们我想用Django作为我的后端框架,qooxdoo作为前端框架.
这样做是否切实可行?
有没有人试过这样做?
他们是如何做到的呢?
链接和指针会很好.
迦特
我想知道可以在运行时通过鼠标调整qx.ui.form.TextArea的大小吗?就像我可以在stackoverflow中重新设置问题框一样.
对于几乎任何事件驱动的JS框架和处理传入数据/事件流的任何应用程序,下面描述的问题可能是主题.为了明确起见,让我们想象一下使用qooxdoo框架的基于网络的IM(类似Facebook聊天).
应用程序接收传入的事件流(例如,通过WebSocket)并将事件重新发送到其内部类:
粗略地说,事件分两个阶段进行处理.第一阶段处理程序主要是警报(在传入消息上播放声音,显示Web通知等).第二阶段执行实际数据处理和显示.当事件到达时,两个阶段处理程序同时被调用.
此模型在应用程序和处理程序之间提供了良好的代码解耦,允许独立添加/删除和启用/禁用它们.然而...
...随着应用程序的发展,事实证明阶段之间可能存在依赖关系.某些第1阶段处理程序应阻止第2阶段的处理程序(例如,在声音警报完成之前,传入的语音记录不应自动播放).有些甚至可能会显示用户确认,如果未给出确认,则取消整个剩余链.qooxdoo中的事件处理假定所有处理程序(几乎)同时被调用,并且无法控制处理程序调用的顺序和时间.
我们如何引入所需的控制,同时保留在事件模型中而不牺牲其优势(低耦合等)?
候选解决方案采用Promises.默认情况下,qooxdoo事件处理程序不返回任何内容.为什么不让它们(可选)返回Promise?在这种情况下,应该引入一个promise-aware事件调解器:
处理程序现在应该订阅介体(为了清楚起见,这在图中省略).除了标准on
/ off
方法之外,中介者应该after
使用以下语义实现一个方法:
after(String name, Function listener, var ctx?)
- 在此事件的所有其他处理程序之后调用处理程序after(String name, Integer id, Function listener, var ctx?)
- 在具有已知ID的另一个处理程序之后调用处理程序after(String name, (Class|String) id, Function listener, var ctx?)
- 在某个已知类的所有其他处理程序之后调用处理程序(可以从this
相应调用的参数派生)因此,我们在两点扩展现有的事件语义:
after
为事件发射器/介体引入了一种方法.发射器/中介器应该将依赖关系和线程处理程序调用解析为相应then()
的Promises块.
所提出的解决方案似乎满足这两个要求:1)它实现事件处理程序之间的依赖关系,2)它允许保持在事件处理范例内.有任何陷阱吗?可以做得更好/更干净吗?任何批评和建议都是受欢迎的.
我完全感到困惑,因为这两个框架中的哪一个要学习.大多数比较都在sproutcore和cappuccino或qooxdoo vs jquery之间.如果标准是一个JS框架:1.构建像Web应用程序的桌面2.提供了为智能手机构建Web应用程序的能力.
你会在这两个框架之间做出选择,为什么?
问候
我制作了自定义listitem视图(基于http://news.qooxdoo.org/tutorial-part-4-2-custom-widgets-4).
我对此列表中的选择项有疑问.始终选择第一个元素(无论列表中哪个元素我都会点击).
我该怎么做才能解决我的问题?
这是我的列表项小部件:
qx.Class.define("project.MyView", { extend : qx.ui.core.Widget, include : [qx.ui.form.MModelProperty], construct : function() { this.base(arguments); var layout = new qx.ui.layout.Grid(4, 2); layout.setColumnFlex(1, 1); this._setLayout(layout); this._createChildControl("icon"); this._createChildControl("date"); this._createChildControl("description"); }, properties : { appearance : { refine : true, init : "listitem" }, icon : { check : "String", apply : "_applyIcon", nullable : true }, date : { check : "String", apply : "_applyDate", nullable : true }, description : { check : "String", apply : "_applyDescription", …
我使用过Backbone.js并且喜欢它.
最近我偶然遇到了qooxdoo?它似乎更好(对于OOP代码设计)!
完全OOP支持(喜欢继承[ this.base
],命名空间等').
我还没有深入研究它,所以我在寻找与Backbone.js的比较而没有任何成功.
所以,如果你使用过两者 - 关于Backbone.js你能说些什么关于qooxdoo?
我不是在谈论Backbone中的"模型持久化"(保存/删除ajax调用)以及qooxdoo(qx.ui.form.Button
)中的UI等功能,而是编码结构和可维护性.
我正在寻找有关Qooxdoo安全性的信息.我想查看我的应用程序与OWASP前10名 要点的是XSS OWASP A3 XSS
我怎样才能确定Qooxdoo是否可以抵御XSS攻击?Qooxdoo会使用一些消毒剂工具吗?
解决了
所有讨论的简短回答.是的Qooxdoo是XSS安全的.默认情况下,不会执行任何字段中的javascript值.
但是,如果使用rich = true,则必须检查输入/输出
qooxdoo ×10
javascript ×3
backbone.js ×1
django ×1
jspresso ×1
listitem ×1
oop ×1
selection ×1
sproutcore ×1
xss ×1