我有一种基于浏览器的WYSIWYG编辑器,用户可以在其中编辑文档模板.
Document-template是一个普通的html,带有一些特殊的"合并代码占位符".通过用来自DB的数据替换这些占位符,可以"实例化"这样的模板.这给出了最终文档 - 模板的一个实例.
我目前的方法如下:
<div contenteditable>
Sample template with <input type=button class="mergecode" value="MergeCode1">.
</div>
Run Code Online (Sandbox Code Playgroud)
(在线样本:http: //jsfiddle.net/tFBKN/)
在这种情况下,输入是不可编辑的,并且表现为固体块 - 正是我需要的.用户可以通过单击DEL或BACKSPACE作为任何其他字符等删除此类合并代码.通过为此类input.mergecode使用适当的CSS,我可以实现我想要的外观.
但是通过这种方法,我在三个不同的UA中有三个不同的问题:
{ font:inherit }
根本不起作用,所以如果输入在里面<b>
就像这里一样,<b><input value="test"></b>
它不会继承任何字体样式.<input>
元素的片段副本从剪贴板内容中删除该输入,因此进一步粘贴操作会插入所有内容但不输入.<input>
产生奇怪结果后立即单击{BACKSPACE} (bug)因此,我正在寻找其他有关如何在HTML中表示不可编辑的内联块"孤岛"的想法.
到目前为止我尝试过的其他方法:
<span contenteditable="false">MergeCode1</span>
- 它不起作用,因为大多数UA从选择中删除此类节点.因此,不可能,例如,应用<b>
或<i>
包含此类跨度的选择.还有其他想法吗?
我有两个GTK窗口
正常(主)窗口运行动画,在注册的回调中绘制内容gtk_widget_add_tick_callback()
.
在某些时候,创建了运行模态循环的辅助窗口:
void show_modal()
{
GtkWindow* gw = gtkwindow(this);
if( parent() )
gtk_window_set_transient_for(gw, gtkwindow( parent() ));
gtk_widget_show(GTK_WIDGET(gw));
gtk_window_set_modal(gw,TRUE);
gtk_window_set_keep_above(gw,TRUE);
this->update_window_state(gool::WINDOW_SHOWN);
while( this->is_valid_window() )
{
if(this->_window_state == WINDOW_HIDDEN) break;
if(this->_window_state == WINDOW_STATE_NA) break;
gtk_main_iteration(); // gtk_main_iteration_do(true);
}
}
Run Code Online (Sandbox Code Playgroud)问题:主窗口中的动画工作正常,直到show_modal()
被调用.它显示为gtk_main_iteration();
按gtk_widget_add_tick_callback()
功能添加的块标记.一旦我关闭辅助窗口,所以while() {gtk_main_iteration();}
循环退出然后主窗口中的动画再次开始运行.
想知道如何在GTK中制作"动画友好"的模态循环吗?
更新:gtk_main_iteration();
除了"当前"之外,它看起来像块不仅是滴答而是任何窗口的任何更新 - 它们只是被冻结.这种GTK行为的原因是什么?
更新#2:
gtk_dialog_run();
表现完全一样gtk_main_iteration();
- 锁定活动窗口以外的任何窗口上的任何更新.
在JS正则表达式符号中^
并$
指定字符串的开头和结尾.并且只有/m
修改器(多线模式)才能匹配线的起点和终点 - 在CR/LF之前和之后的位置.
但在性病::正则表达式/EcmaScript的模式符号^
和$
比赛的开始和行结束始终.
在std :: regex中有什么方法可以定义字符串匹配点的开始和结束吗?换句话说:支持JavaScript多线模式......
显然,IE9中的JS实现包含处理数组文字的(IMO,严重)错误.
在IE9中,在某些情况下这段代码:
var a = [1,2,3,4,];
Run Code Online (Sandbox Code Playgroud)
将创建长度为5的数组,最后一个元素等于undefined
.
以下是我的KiTE引擎测试页面的两个版本:
唯一的区别是第一个文档包含初始化为data.contacts的属性[1,2,3,4]
,第二个文档包含[1,2,3,4,]
.
内部IE调试器报告该data.contacts
数组在第二种情况下包含5个元素.没有调试器,此代码在kite.js中的第98行失败(尝试获取undefined
该data.content数组的第五个元素的属性)
问题:
更新:这里是测试http://jsfiddle.net/hmAms/,其中所有浏览器(包括IE9)都同意var a = [1,2,3,4,];
长度为4 的事实.
我有以下游戏设置:
问题是launcher.exe正在使用H/W加速UI - 使用Direct2D/DirectX.
此页面https://partner.steamgames.com/doc/features/overlay说明:
你的游戏不需要做任何特殊的覆盖工作,它会自动挂钩到Steam推出的任何游戏!
但在我的情况下会产生问题 - 叠加是在错误的窗口上创建的.因此launcher.exe(使用DirectX)具有覆盖,但是由game.exe(真实游戏,使用DirectX和/或OpenGL)创建的窗口不是.
问题是:如何修改launcher.exe窗口的代码以防止"自动"在其上创建Steam覆盖?
更新,Valve的TS回应:
抱歉,没有代码可以有选择地启用或禁用启动器和游戏之间的叠加!
唯一的"选项"是在launcher.exe中禁用DirectX绘图.在这种情况下,他们注入的DLL不会创建那个东西.但这实际上意味着在Steam下没有GPU加速的UI绘图......有点"640kb足以满足所有人"的设计类型.
理想情况下,Steam应该向窗口发送一些自定义消息,以询问窗口希望如何以及在何处呈现该叠加层.但显然没有这样的东西,或者是它?
仅针对上下文,启动器看起来像这样:
我试图替换单个水平行中的图像 - 作为表格行中的单元格.
该布局适用于任何其他元素,但<img>
由于某种原因不适用.
检查一下:
div { display:table; border:1px solid red; }
div > img { display:table-cell; }
Run Code Online (Sandbox Code Playgroud)
<p>These shall be replaced in single row but they are not:</p>
<div>
<img src="http://lorempixel.com/output/city-q-c-78-50-6.jpg">
<img src="http://lorempixel.com/output/people-q-c-78-50-5.jpg">
<img src="http://lorempixel.com/output/animals-q-c-78-50-5.jpg">
</div>
Run Code Online (Sandbox Code Playgroud)
任何的想法?
更新:FF遵循CSS规范并将其替换为单行.所有其他浏览器都没有.Heil Firefox!
请考虑以下设置.
基类:
class Thing {
int f1;
int f2;
Thing(NO_INIT) {}
Thing(int n1 = 0, int n2 = 0): f1(n1),f2(n2) {}
virtual ~Thing() {}
virtual void doAction1() {}
virtual const char* type_name() { return "Thing"; }
}
Run Code Online (Sandbox Code Playgroud)
和派生类只有通过上述方法的实现才有所不同:
class Summator {
Summator(NO_INIT):Thing(NO_INIT) {}
virtual void doAction1() override { f1 += f2; }
virtual const char* type_name() override { return "Summator"; }
}
class Substractor {
Substractor(NO_INIT):Thing(NO_INIT) {}
virtual void doAction1() override { f1 -= f2; } …
Run Code Online (Sandbox Code Playgroud) 我对JavaScript语法有一些疑问,并期待了解它们.
第一:我不明白下面这个语法,
{
Key: () => function()
}
Run Code Online (Sandbox Code Playgroud)
实际项目中的示例:
// Define URL routes
// See https://github.com/flatiron/director
var routes = {
'/': () => render(require('./components/pages/Index')),
'/privacy': () => render(require('./components/pages/Privacy'))
};
Run Code Online (Sandbox Code Playgroud)
它已在https://github.com/kriasoft/react-starter-kit/blob/master/src/app.js中使用
它假设做什么?
它是一样的{ Key: function() {} }
吗?
第二:关于JavaScript Object中的函数,
{
function() {}
}
Run Code Online (Sandbox Code Playgroud)
实际项目中的示例:
var HomePage = React.createClass({
statics: {
layout: App
},
componentWillMount() {
PageActions.set({title: 'React.js Starter Kit'});
},
render() {
return (.....);
}
});
Run Code Online (Sandbox Code Playgroud)
它已被用于https://github.com/kriasoft/react-starter-kit/blob/master/src/components/pages/Index.js
我想感谢您解释为什么这些有效或者您是否可以向我发送有关JavaScript对象的这些语法的正确信息的答案?
我正在寻找一个相当于AdjustWindowRect函数,允许获得窗口标题和边框的宽度/高度.
我们在GTK 3中有这个功能吗?好像不是.我查看了所有gtk_window_xxx,gtk_widget_xxx和gdk_window_xxx*函数......
更新:
原则上我能够将窗口铬/装饰尺寸确定为Δ gdk_window_get_frame_extents()
和gtk_widget_get_allocation()
/ gdk_window_get_origin()
但是
我有自定义 NSWindow,自定义 NSView 设置为其 contentView。
窗口初始化为:
[window setOpaque:NO];
[window setBackgroundColor: [NSColor clearColor]];
[window setHasShadow: NO];
[window setAcceptsMouseMovedEvents: YES];
[window setLevel: NSFloatingWindowLevel];
Run Code Online (Sandbox Code Playgroud)
内容视图,在其drawRect
绘制由纯色填充的简单圆圈中。
所有这些都正常 - 窗口出现在桌面上,我看到了那个圆圈。
唯一不起作用的是:整个窗口矩形对于鼠标点击是不透明的。如果我将在圆圈外(但在不可见的窗口框内)单击,我的视图会接收 mouseDown 事件,但我希望底层窗口(或桌面)被激活。
看来我需要像 hitTest 方法在我的 NSWindow 类上被覆盖,但不幸的是没有这样的方法。
那么问题来了:是否可以在 OS X 中使用带有自定义点击区域的 NSWindow。如果“是”,那么如何?
更新:
查看按预期工作的RoundTransparentWindow示例 - 在透明区域中单击窗口。好像是这一段:
- (void)drawRect:(NSRect)rect {
...
// Reset the window shape and shadow.
if (shouldDisplayWindow) {
[[self window] display];
[[self window] setHasShadow:NO];
[[self window] setHasShadow:YES];
}
}
Run Code Online (Sandbox Code Playgroud)
在 CustomView.m 中与问题有关,但即使有它(在我的情况下)我也无法实现鼠标点击的透明度:(