小编c-s*_*ile的帖子

HTML适用于不可编辑的岛屿

我有一种基于浏览器的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中有三个不同的问题:

  • IE - CSS { font:inherit }根本不起作用,所以如果输入在里面<b>就像这里一样,<b><input value="test"></b>它不会继承任何字体样式.
  • FF - 包含<input>元素的片段副本从剪贴板内容中删除该输入,因此进一步粘贴操作会插入所有内容但不输入.
  • GC - 在<input>产生奇怪结果后立即单击{BACKSPACE} (bug)

因此,我正在寻找其他有关如何在HTML中表示不可编辑的内联块"孤岛"的想法.

到目前为止我尝试过的其他方法:

  • <span contenteditable="false">MergeCode1</span> - 它不起作用,因为大多数UA从选择中删除此类节点.因此,不可能,例如,应用<b><i>包含此类跨度的选择.

还有其他想法吗?

html contenteditable

31
推荐指数
2
解决办法
2万
查看次数

如何在Win32应用程序中检测Windows 10亮/暗模式?

一点上下文:Sciter(纯win32应用程序)已经能够呈现UWP相似的UI:

在黑暗模式下: 在黑暗模式下

在光线模式下: 在光线模式下

Windows 10.1803在Settings applet中引入了Dark/Light开关,例如,如此处所示.

问题:如何确定Win32应用程序中"app mode"的当前类型?

windows winapi win32gui windows-10

20
推荐指数
4
解决办法
3744
查看次数

gtk_widget_add_tick_callback()和gtk_main_iteration()

我有两个GTK窗口

  1. 正常(主)窗口运行动画,在注册的回调中绘制内容gtk_widget_add_tick_callback().

  2. 在某些时候,创建了运行模态循环的辅助窗口:

    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();- 锁定活动窗口以外的任何窗口上的任何更新.

c++ gtk gtk3 gtkmm3

15
推荐指数
1
解决办法
953
查看次数

std :: regex,匹配字符串的开头/结尾

在JS正则表达式符号中^$指定字符串的开头和结尾.并且只有/m修改器(多线模式)才能匹配线的起点和终点 - 在CR/LF之前和之后的位置.

但在性病::正则表达式/EcmaScript的模式符号^$比赛的开始和行结束始终.

在std :: regex中有什么方法可以定义字符串匹配点的开始和结束吗?换句话说:支持JavaScript多线模式......

c++ regex std c++11

12
推荐指数
2
解决办法
7426
查看次数

IE9 JavaScript数组初始化bug

显然,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数组的第五个元素的属性)

问题:

  1. 人们通常如何以及在哪里报告IE中的错误?
  2. 你见过类似这个问题的东西吗?我正在寻找这个问题可重现的最简单的情况.

更新:这里是测试http://jsfiddle.net/hmAms/,其中所有浏览器(包括IE9)都同意var a = [1,2,3,4,];长度为4 的事实.

javascript internet-explorer-9

10
推荐指数
1
解决办法
3792
查看次数

禁用蒸汽覆盖

我有以下游戏设置:

  1. launcher.exe - 在Windows上的Steam下启动,并为用户提供一些设置UI.
  2. 然后launcher.exe启动实际的game.exe.

问题是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应该向窗口发送一些自定义消息,以询问窗口希望如何以及在何处呈现该叠加层.但显然没有这样的东西,或者是它?

仅针对上下文,启动器看起来像这样:

如你所见,没有叠加空间

c++ windows game-engine steam

10
推荐指数
0
解决办法
719
查看次数

<img>元素和显示:table-cell

我试图替换单个水平行中的图像 - 作为表格行中的单元格.

该布局适用于任何其他元素,但<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!

html css

8
推荐指数
1
解决办法
2492
查看次数

"动态"改变现有对象的VTBL,动态子类化

请考虑以下设置.

基类:

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)

c++ new-operator c++11

6
推荐指数
1
解决办法
539
查看次数

基本JavaScript语法

我对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对象的这些语法的正确信息的答案?

javascript javascript-objects reactjs

5
推荐指数
1
解决办法
214
查看次数

GTK窗口,如何获得窗口装饰尺寸?

我正在寻找一个相当于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()但是

  1. 它只在窗口出现在屏幕上后才有效.我之前需要它 - 计算初始窗口位置.
  2. 这真的是一个黑客.

gtk window widget

5
推荐指数
1
解决办法
989
查看次数

单击自定义 NSWindow

我有自定义 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 中与问题有关,但即使有它(在我的情况下)我也无法实现鼠标点击的透明度:(

macos nswindow

3
推荐指数
1
解决办法
1523
查看次数