小编M. *_*llo的帖子

为什么Unicode的所有左右箭头都不匹配(尤其是"黑色"箭头)?

Unicode有一堆箭头,但其中许多都没有匹配的左右版本.特别是,对于导航相关任务来说,似乎最明显(对我而言)的"黑色"箭头没有左右版本,通常"匹配:"➡通常看起来不像⬅.

字体有明显的自由裁量权,这里:对于某些字体,它们确实匹配.但即使是FileFormat.info上的页面也显示出不同的字符:将右箭头左箭头进行比较.

知道是什么给出的吗?对我来说,对于Unicode中包含的任何箭头,你想要匹配(实际上在所有四个主要方向上)似乎是非常明显的.对于这种特定类型的箭头,向上向下箭头匹配."拐角"甚至还有匹配的箭头.

注意:我在此相关问题上发布了相关评论:找不到unicode右箭头

unicode

16
推荐指数
2
解决办法
3228
查看次数

WKWebView的自定义剪切,复制和粘贴操作

我正在开发一个Cocoa应用程序来包装我开发的JavaScript Web应用程序,它提供了SVG图形的编辑.我有以下问题,这是由于希望自定义剪切,复制和粘贴操作及其相关的菜单项.

我怎么能:

  • 用我自己的响应者代替WKWebView或
  • 定制其响应validateMenuItem:cut:,copy:paste:选择?

我对保留有用的WKWebView功能的解决方案特别感兴趣,该功能为文本字段提供剪切,复制和粘贴.

任何帮助将非常感激.细节如下.


我的Cocoa包装器的目的有三个:

  1. 提供持久性
  2. 提供剪贴板集成
  3. 提供印刷

我已经达到1,但在2和3被阻挡了; 这个问题大约是2.

具体来说,我无法让框架调用validateMenuItem:我提供的任何实现- 因此,我无法控制切割,复制或粘贴菜单项何时可供用户选择.

我尝试过以下方法:

  1. 将我的NSViewController子类标记为接受第一个响应者并覆盖validateMenyItem:它 - 我的实现从未被调用过
  2. 子类WKWebView和覆盖validateMenuItem:- 我的实现从未被调用过
  3. 子类NSWindowController和覆盖validateMenuItem:- 我的实现从未被调用过

现在,我的包装网络应用程序有一些文本字段.当我给出其中一个焦点并且它是合适的(文本在剪贴板上;我突出显示一些文本)时,编辑菜单中的剪切,复制和粘贴选项会自动激活.他们甚至工作.(我喜欢这个功能,并希望保留它.)因此我怀疑发生的事情是WKWebView作为我当前的第一响应者,正在拦截validateMenuItem:响应者链上的任何调用.但我还需要能够根据我的包装网页应用程序中的其他状态激活菜单项 - 例如,当用户选择SVG图形时.


更新

在尝试找出问题的解决方案时,我做了额外的挖掘工作.在我的WKWebView子类中,我添加了一个自定义@IBAction.我在故事板上为它创建了一个菜单项,并将菜单项连接到FirstResponder,选择我的新动作.

而我validateMenuItem:在我的WKWebView子类被调用.但是针对那个新的选择器,而不是copy:@IBAction之前添加到我的WKWebView子类的选择器相关联的选择器.

现在,我的copy:方法标记为@IBAction,并且没有标记Interface Builder(或者现在称之为的任何东西)能够使用的方法签名override.当我试图标记它时override,我收到了一个错误.显然,WKWebView不提供copy:id方法 - 即使它选择了文本字段中的文本,它提供了复制功能并正确处理菜单项.

因此,似乎WKWebView会自动(并且始终)处理通常绑定到菜单的某些选择器的验证 - 具体而言cut:,copy:paste:.此外,子类化WKWebView和覆盖validateMenuItem:不足以中断/控制此默认行为.这 …

macos cocoa wkwebview

11
推荐指数
1
解决办法
1424
查看次数

preventDefault阻止Mac上的Firefox中的右键菜单,但不阻止Windows

我有一个Web应用程序,其中我已经连接鼠标和鼠标按下事件; 我使用它们来选择和操作我的应用程序是编辑器的图形语言.为了防止Firefox提供的右键单击/上下文菜单显示,我放置了:

if (evt.preventDefault) {
  evt.preventDefault();
}
Run Code Online (Sandbox Code Playgroud)

在我的每个鼠标向上和鼠标按下事件处理程序的顶部.我不想归谎; 我实际上希望事件传播.

在Mac上,右键单击菜单不会显示; 这就是我的期望.然而,在Windows上,它顽固地出现,即使Firebug确认我的"preventDefault"调用正在发生,同样"defaultPrevented"被设置为true.

知道是什么给出的吗?还有其他人遇到过这个问题吗?我在Mac和Windows上运行Firefox 6.0.2.

[更新:更新版本的Firefox在Mac和Windows上产生了一致的结果:在两个平台上都无法抑制上下文菜单.]

javascript firefox javascript-events

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

使用文件协议调用Chrome中iframe中定义的JavaScript函数

这个问题非常类似于这里提出的问题的完全更新版本:如何使用文件协议在Chrome/Webkit中将JavaScript函数从一个帧调用到另一个帧 - 遗憾的是,这个问题从未真正回答过.

我有一个HTML页面,其中包含iframe中的SVG图像.SVG导出一个JavaScript API,允许它执行有用的操作(重置为缩放和居中,以"实际大小"显示).在iframe下面,我将用户可以点击该按钮的按钮放到SVG中定义的功能中.

我的代码看起来像这样:

function reset() {
  document.getElementByID('iframe').contentWindow.reset();
}
Run Code Online (Sandbox Code Playgroud)

它在Safari,Firefox甚至IE 9(支持SVG - 万岁!)中运行良好.但是在Chrome上,它失败了:调试器通知我:

Property 'reset' of object [object DOMWindow] is not a function.

事实上,似乎确实如此:即使'contentWindow'是DOMWindow类型,它也没有方法或字段(至少,不是调试器会告诉我的).甚至要求其"文档"字段失败(产生null).

摩擦似乎是使用file://协议来传输包含HTML和包含的SVG.如上面引用的问题中所述,当尝试访问"contentWindow"时,Chrome会产生以下错误:

Attempt to access frame with URL file://[...]/contained.svg from frame with URL file://[...]/container.html. Domains, protocols and ports must match.

总的来说,我认为安全性很好; 这看起来像一个安全启发的限制.但是在这里,似乎已经走得太远了:毕竟这些是用户文件系统上的文件,在我的情况下,甚至在同一目录中.

托管代码不是一种选择 - 它必须驻留在用户的机器上.我不想告诉别人"只是不使用Chrome - 它有愚蠢的安全概念."

有没有办法解决这个限制?

html javascript iframe google-chrome file-uri

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