小编Jos*_*ith的帖子

Webkit动画在屏幕上留下垃圾像素

以下代码在屏幕上显示一个白色框.如果你在iPad上运行它(你可以调整像素以便在iPhone上运行它),当你触摸该框时,它将从屏幕上滑落,并在其底部边缘留下一些白色像素.

<!DOCTYPE HTML>
<html>
  <head>
    <meta http-equiv="content-type" content="text/html; charset=utf-8" />
    <meta name="viewport" content="width=device-height, user-scalable=no, maximum-scale=1, minimum-scale=1" />
    <title>Line Bug Demo</title>
    <style>
body {
  background: black;
}
.panel {
  background: white;
  position: absolute;
  z-index: 2;
  width: 1000px;
  height: 500px;
  top: 34px;
  left: 12px;
  -webkit-border-radius: 20px;
  -webkit-transition: left 0.333s ease-in-out;
}
.panel.hide {
  left: -1000px;
}
    </style>
  </head>
  <body>
    <div class="panel" onclick="this.setAttribute('class', 'panel hide')"></div>
  </body>
</html>
Run Code Online (Sandbox Code Playgroud)

获取错误的关键是使用边框半径和动画.如果你只是将它从屏幕上弹出,没有踪迹.如果没有边界半径,则没有路径.

以下是我到目前为止找到的解决方法:

.panel.hide { -webkit-border-radius: 0; }
Run Code Online (Sandbox Code Playgroud)

丑陋,对我的应用来说并不实用,因为我在面板内外都是动画,我真的想要它在屏幕上的圆角.

另一个:

.panel { -webkit-transform: translateZ(0); }
Run Code Online (Sandbox Code Playgroud)

这使得面板进入硬件管道,正确地进行合成.虽然这适用于这个简单的演示,但在我的真实Web应用程序中使用硬件管道会导致内存不足错误.(急剧的,巨大的,直接的变种.)

关于如何摆脱这条线索的任何其他想法?

css animation webkit mobile-safari ios

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

如何从iOS 7中的WebApp打开Safari

在以前的iOS版本中,<a>标签会打开Mobile Safari,您必须截取这些标签,而不是留在webapp(用户已保存到主屏幕的HTML页面)中.

从iOS 7开始,所有链接都保留在WebApp中.当我真的想要它时,我无法弄清楚如何让它打开Safari.

我已经尝试使用window.opena target="_blank",但没有作品.

这是一个例子.https://s3.amazonaws.com/kaontest/testopen/index.html

如果您将其保存到iOS 6的主屏幕,该链接将打开Safari.但是在iOS 7中,它没有.

请注意,这是每个人通常都会问的"对话"问题("如何不打开Safari").这种行为似乎是新的默认行为,我无法弄清楚如何恢复旧的行为!

javascript safari web-applications mobile-safari ios

32
推荐指数
3
解决办法
3万
查看次数

如果不处理Android自定义URL方案,如何回归市场?

我们有一个处理自定义URL方案的应用程序(vstream://).当有人访问具有某些vstream://内容的网页时,如果他们没有安装我们的应用,我们需要将它们重定向到商店.

在iOS中,我们这样做:

setTimeout(function() {
  window.location =
    "itms://itunes.apple.com/us/app/kaon-v-stream/id378890806?mt=8&uo=4";
}, 25);

window.location = "vstream:view?code=...stuff...";
Run Code Online (Sandbox Code Playgroud)

如果window.location分配失败,则在对话框出现之前超时会跳过App Store.(我在这里找到了这种技术:是否可以为YouTube应用程序注册基于http +域的URL方案,如YouTube和地图?)

不幸的是,这个技巧在Android中无效.我们检测到设备服务器端并写了这个而不是itms:line:

"market://details?id=com.kaon.android.vstream";
Run Code Online (Sandbox Code Playgroud)

麻烦的是,当你去一个未处理的网址方案时,iOS会抛出一个错误,Android会转到生成的页面.因此,超时永远不会有机会运行.

是否有某种方式在网页上明确测试是否处理自定义URL方案,或者有人建议像这样的黑客将在Android中工作吗?(当然,我想我需要一个黑客,无论他们使用什么浏览器都可以工作,这可能是一个很高的订单...)

更新:以下方法在Nexus 7上的Jelly Bean中不起作用.新的Chrome浏览器不会转到生成的页面(因此不需要iFrame),但似乎没有任何方法可以知道URL计划得到了处理.如果是的话,无论如何都会触发超时.如果没有处理,超时会触发.如果我使用onload处理程序和iframe,onload处理程序永远不会触发(无论是否安装了应用程序).如果我弄清楚如何知道该计划是否得到处理,我会更新...

我已经删除了我以前的解决方案中的"已解决",因为它不再起作用了.

更新2:我现在有一个很好的跨平台解决方案,适用于iOS,Android 4.1,Chrome和Android预Chrome.见下文...

更新3:谷歌再次打破了一切.看看非常好的解决方案,我已经接受了amit_saxena那里的某个地方/

android url-scheme ios

24
推荐指数
4
解决办法
3万
查看次数

如何在App Store中使用iPad 2或iPhone 4S

我们正在构建一个需要iPad 2或iPhone 4S的RAM,GPU和内核的应用程序.有没有办法配置应用程序,以便它在应用程序商店中不可用于较小硬件的用户?

我知道我只能制造armv7,这就消除了真正的旧东西.看起来我可能需要一个静态相机(即使我们不使用它),以消除iPad 1(虽然这感觉就像一个黑客).但这并不能让它脱离iPhone 4或Touch 4.

有什么建议?

iphone app-store ipad ios

14
推荐指数
2
解决办法
2761
查看次数

如何在GAE(python)中解码encodeURIComponent?

我有一个使用JS encodeURIComponent在客户端编码的unicode字符串.

如果我在本地使用Python中的以下内容,我会得到预期的结果:

>>> urllib.unquote("Foo%E2%84%A2%20Bar").decode("utf-8")
>>> u'Foo\u2122 Bar'
Run Code Online (Sandbox Code Playgroud)

但是当我在Google App Engine中运行时,我得到:

Traceback (most recent call last):
  File "/base/python_runtime/python_lib/versions/1/google/appengine/ext/webapp/_webapp25.py", line 703, in __call__
    handler.post(*groups)
  File "/base/data/home/apps/s~kaon-log/2.357769827131038147/main.py", line 143, in post
    path_uni = urllib.unquote(h.path).decode('utf-8')
  File "/base/python_runtime/python_dist/lib/python2.5/encodings/utf_8.py", line 16, in decode
    return codecs.utf_8_decode(input, errors, True)
UnicodeEncodeError: 'ascii' codec can't encode characters in position 3-5: ordinal not in range(128)
Run Code Online (Sandbox Code Playgroud)

我仍在使用Python 2.5,以防万一.我错过了什么?

python unicode google-app-engine uri character-encoding

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

System.exit在Linux上不是线程安全的吗?

我刚刚从Oracle JDK 1.6切换到Open JDK 1.7.0_03,并且在退出时遇到了相当显着的死锁:

java.lang.Thread.State: WAITING (on object monitor)
 at java.lang.Object.wait(Native Method)
 at java.lang.Thread.join(Thread.java:1258)
 - locked <0x8608dda0> (a sun.awt.X11.XToolkit$1$1)
 at java.lang.Thread.join(Thread.java:1332)
 at java.lang.ApplicationShutdownHooks.runHooks(ApplicationShutdownHooks.java:106)
 at java.lang.ApplicationShutdownHooks$1.run(ApplicationShutdownHooks.java:46)
 at java.lang.Shutdown.runHooks(Shutdown.java:123)
 at java.lang.Shutdown.sequence(Shutdown.java:167)
 at java.lang.Shutdown.exit(Shutdown.java:212)
 - locked <0x8603df28> (a java.lang.Class for java.lang.Shutdown)
 at java.lang.Runtime.exit(Runtime.java:107)
 at java.lang.System.exit(System.java:960)
Run Code Online (Sandbox Code Playgroud)

您似乎必须从AWT事件队列中调用System.exit.这是真的吗?Sun docs Runtime.exit中没有线程要求的文档

我遇到了其他令人惊讶的情况,只有在Linux上才能获得AWT树锁,但是这个需要蛋糕.这是一个错误,还是我错过了文档中的内容?

java linux x11 openjdk awt

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

如何防止用户放大桌面Web应用程序?

我正在尝试使用HTML 5技术来创建在桌面上的Chrome浏览器中运行的应用程序.我的挑战之一是似乎无法做到相当于:

<meta name="viewport" content="width=device-height, user-scalable=no, maximum-scale=1, minimum-scale=1" />
Run Code Online (Sandbox Code Playgroud)

在桌面上.我发现了一个针对铬的问题,但它似乎被忽略了.

要了解问题,请访问Chrome中的maps.google.com或Mac上的Safari,然后执行缩放缩放手势.浏览器只是创建了一个巨大的无法使用的混乱,而不是像用户期望的那样放大地图.

鉴于谷歌地图和Chrome是由同一家公司开发的,这感觉就像一个相当无望的原因.但这似乎是整个"Web应用程序"概念中一个非常基本的缺陷.如果浏览器甚至不允许您控制虚拟视口与窗口大小相同的基本内容,则无法创建本机体验.

我错过了什么吗?

safari webkit google-chrome web-applications gesture

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

有没有办法用 PIL 来弥补丢失的字形?

使用 PIL(ImageFont、ImageDraw 等)渲染文本时,如果字体缺少特定字符的字形,它只会跳过该字符。我在文档中没有看到任何用于指定后备字体的机制。是否有一个经过验证的方法可以在 PIL 中使用后备字体来弥补缺失的字形?

python fonts python-imaging-library

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

如何在 node.js 中捕获 zlib 错误

我正在从可能被压缩的服务器下载内容,所以我使用了我在不同地方找到的这个样板:

    var file = fs.createWriteStream(filename);
    var request = https.get(url, function(response) {
        switch (response.headers['content-encoding']) {
        case 'gzip':
            response.pipe(zlib.createGunzip()).pipe(file);
            break;
        case 'deflate':
            response.pipe(zlib.createInflate()).pipe(file);
            break;
        default:
            response.pipe(file);
            break;
        }
        file.on('finish', function() {
            console.log("Done: "+url);
            file.close(function() {});
        });
    }).on('error', function(err) { // Handle errors
        fs.unlink(filename, function() {});
        console.log(err+" "+url);
    });
Run Code Online (Sandbox Code Playgroud)

问题是,如果 HTTPS 请求因网络错误而失败,我有时会抛出此异常:

Error: unexpected end of file
  at Zlib._handle.onerror (zlib.js:363:17)
Run Code Online (Sandbox Code Playgroud)

该“错误”事件处理程序不会捕获异常。那么我如何捕获它,以便我可以正确清理文件并知道再试一次?

exception-handling zlib node.js

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

哪个javascript框架擅长处理国际化?

假设我正在构建一个相当大的基于浏览器的交互式媒体应用程序,我有这些要求:

  • 仅限Webkit(让我们假设桌面上有chrome)
  • 平板电脑和桌面版本,可能在UI中存在细微差别
  • 完全客户端:没有任何服务器交互
  • 最佳性能
  • 完全国际化
  • 我将构建很多这些应用程序
  • 长期可维护性不是优先考虑的事项(这里没有TDD)
  • 从项目到项目的重用和利用是一个优先事项
  • 设计师统治着这个栖息地 - 很多时间都花在了外观和动画上
  • 非常短的开发时间表
  • 小而精彩的团队

我正在寻找之前做过类似事情的人的建议,以避免事先做出一些糟糕的选择.

我从内到外都了解JS和CSS3,但我很聪明/经验丰富/足够老,知道使用其他人开发的架构框架而不是自己开发的架构框架有好处.但是,如果我正在编写的应用程序符合框架开发人员的目标,那么这些好处才有用.

我花了一天时间试图绕过SenchaTouch并得出结论,它非常适合构建与我正在构建的完全不同的东西.(通过类比SenchaTouch/ExtJS是Swing,我正在寻找Flash.)此外,Sencha似乎在将Javascript更改为基于类的系统方面遇到了很多麻烦,而不仅仅是接受/接受它是一个原型基于系统.这让我感到困扰.

我花了一天时间学习了关于backbone.js的一切,我真的很喜欢它,除了1)我真的不需要任何服务器交互的东西(虽然我可能用它来引导资源文件中的所有UI元素) ,2)它完全支持保持观点是最新的.但也许那是件好事?我不清楚.

我看过knockout.js,尽管它确实对观点保持最新了很多担心,但我所看到的所有演示都没有解决国际化问题.我的i18n需求很简单:我的应用程序中出现的每个文本字符串都需要来自一个表(并且可以随时更改使用的语言).当我在knockout.js主页上看到类似的内容时:

optionsCaption="choose..."

我担心基于运行时变量设置使字符串动态变得多么容易.也就是说,如果我想写相当于:

optionsCaption=l10n("choose")

是否有一种相当轻松的方法可以做到这一点,并且在整个UI中自动传播语言的变化涉及到什么?

我看到另一个框架的强烈推荐,可能更适合?

另外,我假设我们将使用jquery/ui或zepto,可能是zepto,以消除动态页面更新和动画内容中的大量样板.对架构的这一部分有任何有用的想法?

jquery sencha-touch backbone.js zepto knockout.js

4
推荐指数
1
解决办法
2270
查看次数

有没有办法将白名单.appspot.com列入白名单,这样我就可以在Firefox 6中为该域设置一个cookie?

为了测试一些东西,我一直在使用在.appspot.com域上设置cookie的技巧,这允许我在两个不同的.appspot.com GAE应用程序之间共享数据.这已经停止在Firefox 6中工作了,谷歌的一个人告诉我:

这是因为appspot.com被添加到现有浏览器不允许设置cookie的域的公共后缀列表中:http: //mxr.mozilla.org/mozilla-central/source/netwerk/dns/effective_tld_names.dat?原料= 1

这对普通用户来说完全有意义.但是对于我的测试,我真的希望将FF视为.appspot.com作为常规域,而不是"有效TLD".有没有办法"白名单".appspot.com或以其他方式覆盖FF中使用的effective_tld_names.dat?

(我需要一个可以在OS X上运行的hack,以防万一.)

cookies firefox google-app-engine tld

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

是否有适用于Python 2.7的ereporter版本

我是Google App Engine ereporter模块的忠实粉丝.它每天向您发送一封电子邮件,其中包含您记录的所有错误.我正在创建一个新的应用程序,它默认为Python 2.7和多线程,如果我尝试包含ereporter我会得到错误,因为它依赖于wsgi.

有没有办法在GAE中使用非弃用的python来获得此功能?

google-app-engine multithreading python-2.7

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