以下代码在屏幕上显示一个白色框.如果你在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应用程序中使用硬件管道会导致内存不足错误.(急剧的,巨大的,直接的变种.)
关于如何摆脱这条线索的任何其他想法?
在以前的iOS版本中,<a>标签会打开Mobile Safari,您必须截取这些标签,而不是留在webapp(用户已保存到主屏幕的HTML页面)中.
从iOS 7开始,所有链接都保留在WebApp中.当我真的想要它时,我无法弄清楚如何让它打开Safari.
我已经尝试使用window.open和a target="_blank",但没有作品.
这是一个例子.https://s3.amazonaws.com/kaontest/testopen/index.html
如果您将其保存到iOS 6的主屏幕,该链接将打开Safari.但是在iOS 7中,它没有.
请注意,这是每个人通常都会问的"对话"问题("如何不打开Safari").这种行为似乎是新的默认行为,我无法弄清楚如何恢复旧的行为!
我们有一个处理自定义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那里的某个地方/
我们正在构建一个需要iPad 2或iPhone 4S的RAM,GPU和内核的应用程序.有没有办法配置应用程序,以便它在应用程序商店中不可用于较小硬件的用户?
我知道我只能制造armv7,这就消除了真正的旧东西.看起来我可能需要一个静态相机(即使我们不使用它),以消除iPad 1(虽然这感觉就像一个黑客).但这并不能让它脱离iPhone 4或Touch 4.
有什么建议?
我有一个使用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,以防万一.我错过了什么?
我刚刚从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树锁,但是这个需要蛋糕.这是一个错误,还是我错过了文档中的内容?
我正在尝试使用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应用程序"概念中一个非常基本的缺陷.如果浏览器甚至不允许您控制虚拟视口与窗口大小相同的基本内容,则无法创建本机体验.
我错过了什么吗?
使用 PIL(ImageFont、ImageDraw 等)渲染文本时,如果字体缺少特定字符的字形,它只会跳过该字符。我在文档中没有看到任何用于指定后备字体的机制。是否有一个经过验证的方法可以在 PIL 中使用后备字体来弥补缺失的字形?
我正在从可能被压缩的服务器下载内容,所以我使用了我在不同地方找到的这个样板:
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)
该“错误”事件处理程序不会捕获异常。那么我如何捕获它,以便我可以正确清理文件并知道再试一次?
假设我正在构建一个相当大的基于浏览器的交互式媒体应用程序,我有这些要求:
我正在寻找之前做过类似事情的人的建议,以避免事先做出一些糟糕的选择.
我从内到外都了解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,以消除动态页面更新和动画内容中的大量样板.对架构的这一部分有任何有用的想法?
为了测试一些东西,我一直在使用在.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,以防万一.)
我是Google App Engine ereporter模块的忠实粉丝.它每天向您发送一封电子邮件,其中包含您记录的所有错误.我正在创建一个新的应用程序,它默认为Python 2.7和多线程,如果我尝试包含ereporter我会得到错误,因为它依赖于wsgi.
有没有办法在GAE中使用非弃用的python来获得此功能?
ios ×4
python ×2
safari ×2
webkit ×2
android ×1
animation ×1
app-store ×1
awt ×1
backbone.js ×1
cookies ×1
css ×1
firefox ×1
fonts ×1
gesture ×1
ipad ×1
iphone ×1
java ×1
javascript ×1
jquery ×1
knockout.js ×1
linux ×1
node.js ×1
openjdk ×1
python-2.7 ×1
sencha-touch ×1
tld ×1
unicode ×1
uri ×1
url-scheme ×1
x11 ×1
zepto ×1
zlib ×1