我正在使用WebView包装Android应用程序,它需要呈现HTML5画布.它可以在我的所有设备上完美运行,除了一个.我的Galaxy S4(4.2.2)正在闪烁画布,然后很快变灰.这是它产生的logcat消息:
D/GestureDetector(20071):[Surface Touch事件] mSweepDown False,mLRSDCnt:-1 mTouchCnt:7 mFalseSizeCnt:0
V/WebViewInputDispatcher(20071):blockWebkitDraw
V/WebViewInputDispatcher(20071):blockWebkitDraw lockedfalse
D/webview(20071):blockWebkitViewMessage = false
我点击一个按钮,然后画布应该渲染.这就是第一个日志项用于表面触摸事件的原因.当我直接使用webkit浏览器ping我的应用程序时,它适用于我的S4,但是当我自己包装或使用Cordova时,它会给我这个错误.我添加了两个屏幕截图以进一步显示问题.第一个是正确渲染,第二个是问题.
Android 2.3.6:
Android:4.2.2:
所以回到我的问题.这条消息怎么了?有没有人对如何正确渲染画布有任何建议?
我正在尝试将其包含com.google.gms:google-services:3.0.0
到我的cordova 插件中,而不必将其破解到主build.gradle
文件中。我已将以下文件添加到我的应用程序中:
build-extras.gradle
buildscript {
repositories {
mavenCentral()
jcenter()
}
dependencies {
classpath 'com.google.gms:google-services:3.0.0'
}
}
apply plugin: 'com.google.gms.google-services'
Run Code Online (Sandbox Code Playgroud)
尝试构建应用程序时出现以下错误:
* Where:
Script 'platforms/android/build-extras.gradle' line: 11
* What went wrong:
A problem occurred evaluating script.
> Plugin with id 'com.google.gms.google-services' not found.
Run Code Online (Sandbox Code Playgroud)
我曾尝试包括build-extras.gradle
使用<framework src="src/android/build-extras.gradle" custom="true" type="gradleReference" />
并手动将其复制到platforms/android
.
Cordova 参考:https : //cordova.apache.org/docs/en/latest/guide/platforms/android/#extending-buildgradle
谷歌参考:https : //developers.google.com/identity/sign-in/android/start-integrating
如果我从中获取相同的代码build-extras.gradle
并直接附加到build.gradle
它的末尾似乎可以工作。关于如何让它在我的build-extras.gradle
文件中工作的任何想法?
我已经做了一些搜索,但没有找到任何可以帮助我解决这个问题的东西.我最近将我的画布图像切换为矢量,除了适用于Android的Chrome(在30+上测试)之外,它在所有功能上都很出色.特别是在这个使用EaselJS的所有画布内容的例子中.
更新:http: //jsfiddle.net/mcfarljw/hnMLU/通过Chrome查看手机上的这个小提琴以查看问题.
有什么我可以做的让它顺利完成吗?
//check fiddle for live code
var stage = new createjs.Stage("demo");
var stroke = new createjs.Shape();
stage.addChild(stroke);
stage.update();
Run Code Online (Sandbox Code Playgroud) 我有一个数组作为我的keypath使用indexedDB,它适用于Chrome和Firefox,但当我尝试使用IE添加/放置时,它给我一个DataError.
var request = window.indexedDB.open("MyTestDatabase");
request.onsuccess = function(event) {
var database = event.target.result;
var transaction = database.transaction(["document"], "readwrite");
var objectStore = transaction.objectStore("document");
var request = objectStore.put({title: 'MyDoc', version: 0});
request.onsuccess = function() {
console.log('document added');
};
request.error = function(error) {
console.log(JSON.stringify(error));
};
transaction.oncomplete = function() {
console.log('transaction complete');
};
transaction.onerror = function(error) {
console.log(JSON.stringify(error));
};
};
request.onupgradeneeded = function(event) {
event.target.result.createObjectStore("document", {keyPath: ['title', 'version']});
};
Run Code Online (Sandbox Code Playgroud)
错误截图:
如何保留我的双keyPath并使其与IE一起使用?
我正在尝试使用twitter bootstrap下拉菜单,以便在使用较小的设备时不会崩溃并保持在同一条线上.这是目前的样子:
我希望名称(在此示例中为John Smith)与"我的应用程序"文本和切换按钮内联.我将如何实现这一目标?
<div class="navbar navbar-default navbar-fixed-top" role="navigation">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="#">My Application</a>
</div>
<div>
<ul class="nav navbar-nav navbar-right navbar-user">
<li class="dropdown user-dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown"><i class="fa fa-user"></i> John Smith <b class="caret"></b></a>
<ul class="dropdown-menu">
<li><a href="#"><i class="fa fa-user"></i> Profile</a></li>
<li><a href="#"><i class="fa fa-envelope"></i> Inbox <span class="badge">7</span></a></li>
<li><a href="#"><i class="fa fa-gear"></i> Settings</a></li>
<li class="divider"></li>
<li><a href="#"><i class="fa …
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用该remote_api_stub
方法运行具有远程api访问远程数据存储的localhost Web服务器ConfigureRemoteApiForOAuth
.
我一直在使用以下Google文档作为参考,但发现它相当稀疏:
https://cloud.google.com/appengine/docs/python/tools/remoteapi
我相信我错过了认证位,但找不到具体的资源来指导我.考虑到以下代码示例,在运行时访问远程数据存储区的最简单方法是什么dev_appserver.py
?
import webapp2
from google.appengine.ext import ndb
from google.appengine.ext.remote_api import remote_api_stub
class Topic(ndb.Model):
created_by = ndb.StringProperty()
subject = ndb.StringProperty()
@classmethod
def query_by_creator(cls, creator):
return cls.query(Topic.created_by == creator)
class MainPage(webapp2.RequestHandler):
def get(self):
remote_api_stub.ConfigureRemoteApiForOAuth(
'#####.appspot.com',
'/_ah/remote_api'
)
topics = Topic.query_by_creator('bill')
self.response.headers['Content-Type'] = 'text/plain'
self.response.out.write('<html><body>')
self.response.out.write('<h1>TOPIC SUBJECTS:<h1>')
for topic in topics.fetch(10):
self.response.out.write('<h3>' + topic.subject + '<h3>')
self.response.out.write('</body></html>')
app = webapp2.WSGIApplication([
('/', MainPage)
], debug=True)
Run Code Online (Sandbox Code Playgroud) 有一个使用Twitter引导程序的最佳做法是,有一个导航栏,其中两个项目都是永久固定的(即使在移动设备上),而其他项目也会崩溃.当我尝试在移动设备上删除折叠间距之外的项目.我可以手动添加一个css规则,但我想可能有一种内置的方法来处理这个问题.非常感谢您的建议.
移动(带间距问题):
HTML:
<div class="navbar navbar-default navbar-fixed-top" role="navigation">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="#">My App</a>
<div id="timer" class="navbar-text glyphicon glyphicon-time"><a href="#"></a></div>
<div id="items-due" class="navbar-text glyphicon glyphicon-pencil"></div>
<div id="add-button" class="navbar-text glyphicon glyphicon-plus-sign"></div>
<div id="audio-button" class="navbar-text glyphicon glyphicon-volume-off"></div>
<div id="info-button" class="navbar-text glyphicon glyphicon-info-sign"></div>
<div id="back-button" class="navbar-text glyphicon glyphicon-backward"></div>
<div id="next-button" class="navbar-text glyphicon glyphicon-forward"></div>
</div>
<div class="collapse navbar-collapse">
<ul class="nav navbar-nav">
<li id="forums-button"><a href="#">Forums</a></li>
</ul>
</div><!--/.nav-collapse --> …
Run Code Online (Sandbox Code Playgroud) 我有一个设置了最大高度/宽度的父 div。我想知道是否可以仅使用 CSS 将两个子 div 设置为根据百分比自动调整它们的高度?
HTML:
<div id="parent">
<div id="top"></div>
<div id="bottom"></div>
</div>
Run Code Online (Sandbox Code Playgroud)
CSS:
html, body {
height: 100%;
width: 100%:
}
#parent {
max-width: 400px;
max-height: 600px;
}
#top {
height: 30%;
}
#bottom {
height: 70%;
}
Run Code Online (Sandbox Code Playgroud)
其预期实现将用于移动显示器,该显示器按比例填充屏幕高度,而不会强制垂直滚动。
编辑:我现在意识到如果你有一个固定的父母身高,父母的身高百分比会起作用。问题仍然在于是否有一种方法可以仅使用 CSS 来实现与屏幕尺寸相匹配的灵活高度。似乎仅使用 CSS 并需要 JS 干预是不可能的。
我在下面有一个示例,它创建了两个父模型,然后使用自定义函数将子模型推送到父模型中.
JS Bin:http://jsbin.com/hamuro/4/edit?html,console
var Child = Backbone.Model.extend({});
var Parent = Backbone.Model.extend({
defaults: {
children: []
},
addChild: function() {
var child = new Child();
this.get('children').push(child);
return child;
}
});
var parent1 = new Parent();
var parent2 = new Parent();
parent2.addChild();
parent2.addChild();
console.log('Parent 1 Total Children: ' + parent1.get('children').length);
console.log('Parent 2 Total Children: ' + parent2.get('children').length);
Run Code Online (Sandbox Code Playgroud)
预期产出:
"父母1名儿童总数:0"
"父母2名儿童总数:2"
实际产量:
"父母1名儿童总数:2"
"父母2名儿童总数:2"
题:
为什么孩子被推到两个父模型,即使我只有指定的孩子被推到父2?
android ×2
css ×2
html5-canvas ×2
javascript ×2
antialiasing ×1
backbone.js ×1
cordova ×1
height ×1
html ×1
indexeddb ×1
navbar ×1
python ×1
webkit ×1