小编Don*_*nMB的帖子

Canvas仅使用fabric.js在click事件上呈现自定义webfont

我对自定义webfonts和fabric.js一直存在问题.我的应用程序使用了很多自定义webfonts,我在向画布添加iText时启动它们:

var text = new fabric.IText("My Text", {
    fontFamily: "Some Custom Font Family",
    fontSize: 50,
    top: 0,
    left: 0,
    fill: "#000000"
  });

  canvas.add(text);
  canvas.bringToFront(text);
  canvas.setActiveObject(text);

  canvas.renderAll();
Run Code Online (Sandbox Code Playgroud)

只有当我点击画布上的iText并与之互动时,这才有效.然后,一旦加载了字体,它就不再是问题了.问题是最初和第一次添加iText.

我研究了很多并且来到这个主题:

在Fabric.js中使用远程Web字体初始化加载的文本

但这对我没有帮助.提供的jsfiddle有完全相同的问题:

http://jsfiddle.net/vvL6f/6/

只需使用带有清除缓存的全新浏览器(例如Chrome CMD + Shift + R)打开这个小提琴.一旦打开小提琴,您将看到自定义的webfont未加载,但是当您单击右侧的iText时会立即加载.

现在,我们如何解决这个问题?

建议的方法是设置useNative为false并让Cufon呈现文本,但这不起作用.

我将我的webfonts加载到这样的CSS文件中:

@font-face {
    font-family: 'ApolloASM';
    src: url('ApolloASM-webfont.eot');
    src: url('ApolloASM-webfont.eot?#iefix') format('embedded-opentype'),
         url('ApolloASM-webfont.woff2') format('woff2'),
         url('ApolloASM-webfont.woff') format('woff'),
         url('ApolloASM-webfont.ttf') format('truetype'),
         url('ApolloASM-webfont.svg#apollo_asmregular') format('svg');
    font-weight: normal;
    font-style: normal;
}
Run Code Online (Sandbox Code Playgroud)

javascript canvas fabricjs

13
推荐指数
2
解决办法
4600
查看次数

子域上的javascript pushState抛出异常

在我的js文件中:

window.history.pushState('','',slug);
Run Code Online (Sandbox Code Playgroud)

我知道pushState方法的安全限制:

新URL必须与当前URL的源相同; 否则,pushState()将抛出异常.

但是,在我的网站上我使用了一个域:www.mydomain.compushState工作正常.但是当我在我的子域上调用该方法时subdomain.mydomain.com,它会抛出一个奇怪的异常:

未捕获的SecurityError:无法在"历史记录"上执行"pushState":无法在原点为" http://subdomain.mydomain.com " 的文档中创建URL为" http://0.0.7.210/ "的历史状态对象.

我把IP 0.0.7.210称为内部内容但我在开发+实时环境中得到了这个例外.

顺便说一句,我确实通过Route53解析了我的子域名.也许它与此有关?

javascript

9
推荐指数
1
解决办法
485
查看次数

已禁用按钮仍会侦听单击事件

我在一个表格中遇到问题,我会进行一些jquery验证.如果未填写特定输入字段,则应通过添加禁用属性来禁用"前进"按钮:

if errors
  $('.btn-move-forward').attr("disabled", true)
Run Code Online (Sandbox Code Playgroud)

虽然有效,但我在该按钮上也有一个点击事件:(coffeescript)

$('.btn-move-forward').click ->
  $('#step2, #step3').toggle()
Run Code Online (Sandbox Code Playgroud)

我希望.btn-move-forward在按钮被禁用时不会触发click事件,但确实如此!

第一:我不明白为什么,因为每个浏览器规范都定义了这不应该发生.无论如何,我试图通过做以下事情绕过它:

$('.btn-move-forward').click ->
  if !$(this).is(:disabled)
    $('#step2, #step3').toggle()
Run Code Online (Sandbox Code Playgroud)

或这个

$('.btn-move-forward').click ->
  if $(this).prop("disabled", false)
    $('#step2, #step3').toggle()
Run Code Online (Sandbox Code Playgroud)

或者像这样组合事件监听器:

$('.btn-move-forward').on 'click', '.btn-move-forward:enabled', ->
   $('#step2, #step3').toggle()
Run Code Online (Sandbox Code Playgroud)

不,所有这些都无法正常工作.按钮仍然表现为前进按钮.

onclick如果它被禁用,我想要的是没有收听的按钮.

javascript jquery coffeescript

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

渐进式网络应用程序OCR SDK(JavaScript)

我们开发了一个使用OCR技术的网络应用程序.我们使用付费API服务,效果非常好.我们的后端/服务器使用基于Ruby/Rails的API,我们的前端/客户端使用VUE.js. 现在OCR技术是服务器端,但我们也希望进入离线/ PWA(渐进式网络应用程序)市场,目前正在开发我们的应用程序的离线版本.由于我们的应用程序的OCR部分必须在客户端运行,我们移动OCR技术也客户端,这意味着我们必须使用某种PWA兼容的OCR技术,例如JavaScript SDK

我可能搜索过整个互联网,但似乎并没有真正的解决方案.这一切都归结为两个主要提供者:

  • tesseract /可能是最大的OCR项目(开源).他们提供了一个JS SDK(tesseract.js) - > http://tesseract.projectnaptha.com/但这很糟糕.我们将结果与我们正在使用的API进行了比较,结果非常糟糕.因此,我们不能使用它.
  • ABBYY可能是网络上最知名的OCR提供商,他们以合理的价格提供OCR扫描.在调用它们之后,遗憾的是它们也没有为PWA提供任何解决方案,仅适用于本机应用程序
  • 不幸的是,其他多个小项目使用除JS库之外的所有东西

在放弃并考虑开发本机应用程序之前(这将是我们的报价成本密集型),我考虑在这里询问是否已知任何已知的用于PWA的OCR解决方案,我还没有考虑过.谢谢

javascript ocr progressive-web-apps

9
推荐指数
1
解决办法
1733
查看次数

AWS SES 554-无适用于 web.de 和 GMX 电子邮件地址的 SMTP 服务

我正在使用 AWS SES 通过我的应用程序自动发送电子邮件。我已将身份管理配置如下:

在此处输入图片说明

DKIM 设置正确。除了收到以下错误的 GMX 和 WEB.de 电子邮件外,我从我的域发送电子邮件没有任何问题:

Action: failed
Final-Recipient: rfc822; xyz@web.de
(mxweb111) Nemesis ESMTP Service not available
554-No SMTP service
554-Reject due to policy restrictions
Run Code Online (Sandbox Code Playgroud)

查看进一步的文档,似乎来自我的域的电子邮件被其服务器归类为垃圾邮件。

我做了研究,发现我可能需要配置反向 DNS,但看起来,AWS SES不支持这个

我还能做些什么来使我的电子邮件通过 WEB.de 和 GMX 服务器?谢谢你。

amazon-web-services amazon-ses

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

rails oauth并使用FB移动应用程序,如果我们是移动

我正在使用facebook omniauth gem并想解决以下简单问题:

如果用户浏览我的rails app mobile(例如通过iPhone,iPad),我希望他通过他的设备上的FB应用程序进行身份验证.目前通过Facebook的浏览器版本进行身份验证,这是一种奇怪的用户体验.

我通过https://github.com/mkdynamic/omniauth-facebook查看配置参数,但在那里找不到任何帮助.

我假设我需要编辑我的omniauth.rb文件,目前看起来像这样:

Rails.application.config.middleware.use OmniAuth::Builder do
     provider :facebook, 'XXXXXXX', 'XXXXXX',
     :scope => 'email'
  end
Run Code Online (Sandbox Code Playgroud)

谢谢

facebook ruby-on-rails omniauth

7
推荐指数
1
解决办法
886
查看次数

exec sidekiq 登录heroku

我想在我的 heroku 环境中执行 sidekiq 日志文件,但我在文档中找不到任何内容,谷歌也在这里帮助我。我确定它必须是……exec sidekiq -L log/sidekiq.log但该命令在 heroku 上失败了。如何在 heroku 环境中访问我的 sidekiq 日志文件?

heroku sidekiq

7
推荐指数
2
解决办法
2591
查看次数

在heroku上通过sidekiq导入csv时的file.path问题

我正在使用后台作业将用户数据从 csv 文件导入到我的数据集中。首先,我在用户模型中通过简单地调用用户模型中的方法并传递通过表单传输的文件路径来“硬”执行此操作file_field

\n\n
User.import_csv(params[:file].path)\n
Run Code Online (Sandbox Code Playgroud)\n\n

在本地和生产环境中运行良好(heroku)。

\n\n

现在,当涉及到巨大的 CSV 文件时,我明白我需要一份工作来在后台执行此导入。我熟悉 redis 和 sidekiq,所以这个工作很快就完成了。

\n\n
CsvImportJob.perform_async(URI.parse(params[:file].path))\n
Run Code Online (Sandbox Code Playgroud)\n\n

在我的工人中:

\n\n
def perform(file_path)\n\n  User.import_csv(file_path)\n\nend\n
Run Code Online (Sandbox Code Playgroud)\n\n

嗯,这在本地也很完美,但是当我在生产中遇到这个问题时,我在日志中看到以下错误:

\n\n
\xc2\xbb 10 Aug 2015 13:56:26.596 2015-08-10 11:56:25.987726+00:00 app worker.1 - - 3 TID-oqvt6v1d4 ERROR: Actor crashed!\n\xc2\xbb 10 Aug 2015 13:56:26.596 2015-08-10 11:56:25.987728+00:00 app worker.1 - - Errno::ENOENT: No such file or directory @ rb_sysopen - /tmp/RackMultipart20150810-6-14u804c.csv\n\xc2\xbb 10 Aug 2015 13:56:26.596 2015-08-10 11:56:25.987730+00:00 app worker.1 - - /app/vendor/ruby-2.2.2/lib/ruby/2.2.0/csv.rb:1256:in `initialize\'\n
Run Code Online (Sandbox Code Playgroud)\n\n

这意味着是file_path变量。\n不知何故,当我将文件传递给 sidekiq …

ruby-on-rails heroku sidekiq

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

通过user_agent(rails)检查设备类型

我想知道我的用户是否正在浏览我的rails应用程序中的页面

  • 平板电脑或
  • 移动设备或
  • 台式电脑

我挖掘了许多不同的解决方案.这是我的最爱:

  1. ua-parser gem:https://github.com/ua-parser/uap-ruby似乎非常干净但不幸的是它总是Other在我使用时绘图parsed_string.device- 我可以很好地检测操作系统和浏览器.
  2. 从头开始写

从头开始写作结果如下:

if request.user_agent.downcase.match(/mobile|android|iphone|blackberry|iemobile|kindle/)
  @os = "mobile"
elsif request.user_agent.downcase.match(/ipad/)
  @os = "tablet"
elsif request.user_agent.downcase.match(/mac OS|windows/)
  @os = "desktop"
end
Run Code Online (Sandbox Code Playgroud)

但是,我想念的是用户代理"设备"定义的完整文档.

例如:如果用户在平板电脑/移动设备或桌面上浏览,我需要查看哪些模式?我不能只是猜测和检查,例如ua-parser正则表达式也没有帮助我(非常复杂):https://github.com/tobie/ua-parser/blob/master/regexes.yaml

有没有简单的解决方案来解决我的问题?谷歌分析如何做到这一点?我试图研究但找不到它.他们还展示设备(桌面/平板/移动).

user-agent ruby-on-rails

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

提交应用预览时出现 MOV_RESAVE_CORRUPTED 错误

将应用程序预览上传到应用程序商店提交过程时,我收到一个未知错误MOV_RESAVE_CORRUPTED,该错误在上传过程中的任何地方都没有记录。我使用 QuickTime 捕获了预览,并且必须ffmpeg使用此命令将其重新格式化为 30 FPS 视频

ffmpeg -r 30 -i preview1.mov -acodec copy -crf 12 -vf scale=886:1920,setsar=1:1 preview1-edit.mp4

该视频在我的本地机器上运行良好,但无法上传。

坦白说,整个过程很烦人,压力也很大。希望我可以帮助其他有这个问题的人。谢谢你。

在此处输入图片说明

app-store app-store-connect

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