我有一个android程序(webview中的Java + html).我可以从javascript调用Java代码.但另一种方式停止工作(在eclipse中更新后).
所以这就是我想要做的
我试图让它在MainActivity中使用WebView,但它没有用.
MainActivity.java
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
final WebView webView = (WebView)findViewById(R.id.webView);
webView.getSettings().setJavaScriptEnabled(true);
webView.setWebChromeClient(new WebChromeClient());
WebSettings webSettings = webView.getSettings();
webSettings.setJavaScriptEnabled(true);
javascr = new Javascript(this, webView);
webView.addJavascriptInterface(javascr, "AndroidFunction");
webView.loadUrl("file:///android_asset/www/index.html");
....
}
Run Code Online (Sandbox Code Playgroud)
Javascript.java
public class Javascript {
Context cont;
WebView webView;
Javascript(Context c, WebView w) {
cont = c;
webView = w;
}
// function called in the javascript by AndroidFunction.test();
public void test() {
// Breaking point!!!
webView.loadUrl("javascript:helloBack()");
} …Run Code Online (Sandbox Code Playgroud) 我是Vuejs的新手.做了些什么,但我不知道这是简单/正确的方式.
我想要的是
我想在数组中有一些日期并在事件上更新它们.首先我尝试了Vue.set,但它没有成功.现在更改我的数组项后:
this.items[index] = val;
this.items.push();
Run Code Online (Sandbox Code Playgroud)
我推送()没有任何数组,它会更新..但有时最后一项将被隐藏,不知何故......我认为这个解决方案有点hacky,我怎么能让它稳定?
简单的代码在这里:
new Vue({
el: '#app',
data: {
f: 'DD-MM-YYYY',
items: [
"10-03-2017",
"12-03-2017"
]
},
methods: {
cha: function(index, item, what, count) {
console.log(item + " index > " + index);
val = moment(this.items[index], this.f).add(count, what).format(this.f);
this.items[index] = val;
this.items.push();
console.log("arr length: " + this.items.length);
}
}
})Run Code Online (Sandbox Code Playgroud)
ul {
list-style-type: none;
}Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/1.0.11/vue.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.10.6/moment.min.js"></script>
<div id="app">
<ul>
<li v-for="(index, item) in items">
<br><br>
<button v-on:click="cha(index, item, 'day', -1)">
- …Run Code Online (Sandbox Code Playgroud)我正在尝试保存一个网页,以供 Nodejs 和 puppeteer 离线使用。我看到很多例子:
await page.screenshot({path: 'example.png'});
Run Code Online (Sandbox Code Playgroud)
但是对于更大的网页,这不是一种选择。因此,在 puppeteer 中更好的选择是加载页面,然后像这样保存:
const html = await page.content();
// ... write to file
Run Code Online (Sandbox Code Playgroud)
好的,那行得通。现在我要像推特一样滚动页面。所以我决定屏蔽 puppeteer 页面中的所有图片:
page.on('request', request => {
if (request.resourceType() === 'image') {
const imgUrl = request.url()
download(imgUrl, 'download').then((output) => {
images.push({url: output.url, filename: output.filename})
}).catch((err) => {
console.log(err)
})
request.abort()
} else {
request.continue()
}
})
Run Code Online (Sandbox Code Playgroud)
好的,我现在使用“npm 下载”库来下载所有图像。是的,下载图像没问题:D。
现在,当我保存内容时,我想将其指向源中的离线图像。
const html = await page.content();
Run Code Online (Sandbox Code Playgroud)
但现在我喜欢替换所有的
<img src="/pic.png?id=123">
<img src="https://twitter.com/pics/1.png">
Run Code Online (Sandbox Code Playgroud)
还有这样的事情:
<div style="background-image: url('this_also.gif')></div>
Run Code Online (Sandbox Code Playgroud)
那么有没有办法(在 puppeteer 中)抓取一个大页面并离线存储整个内容?
Javascript 和 CSS …
原始问题
我想知道为什么我无法从此代码中的圆圈中获取"dragstart"消息...
拖动它时,我不能得到"圈子"的消息.我尝试了一些来自http://www.html5canvastutorials.com的工作代码.在这段代码中:http://www.html5canvastutorials.com/labs/html5-canvas-drag-and-drop-resize-and-invert-images/,它正在运行.
jsfiddle:http://jsfiddle.net/zoutepopcorn/YXJpH/
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<style>
body {
margin: 0px;
padding: 0px;
}
</style>
</head>
<body>
<div id="container"></div>
<script src="http://www.html5canvastutorials.com/libraries/kinetic-v4.1.2.js"></script>
<script src="setting.js"></script>
<script src="imgStyle.js"></script>
<script>
var stage;
var layer;
setupStage();
function setupStage() {
stage = new Kinetic.Stage({
container: "container",
width: 800,
height: 800
});
layer = new Kinetic.Layer();
messageLayer = new Kinetic.Layer();
stage.add(messageLayer); …Run Code Online (Sandbox Code Playgroud) 我正在寻找一种简单的方法来制作日志功能.
我正在调用一个函数logSuc("return from Prom"),该函数在第30行.
因此代码将始终指向该函数的第30行.在控制台中:
所以说有这个代码:
const logSuc = (msg) => {
console.log(`%c ${msg}`, 'background: green; color: white; display: block;');
};
Run Code Online (Sandbox Code Playgroud)
另一种选择可能是:
const log = console.log;
function red(msg) {
return `%c ${msg}`, 'background: red; color: white; display: block;';
}
log(red('its red');
Run Code Online (Sandbox Code Playgroud)
但现在我有两个功能,我想保持简短
所以问题是我logSuc("") 总是指向第30行.
但我希望它指向我称之为logSuc的行("有效").
我想用mapbox制作一个簇层,是的,我做到了:D。但我希望能够将其关闭
所以我正在制作一个来源
const source = {
type: "geojson",
data: {
"type": "FeatureCollection",
"features": []
},
cluster: true,
clusterRadius: 10
}
this.map.addSource(id, source);
Run Code Online (Sandbox Code Playgroud)
现在我可以设置数据:
this.map.getSource(this.id).setData({
"type": "FeatureCollection",
"features": this.createInnerCircles()
})
Run Code Online (Sandbox Code Playgroud)
之后,我将设置簇和圆的图层。现在集群正在工作
但现在:我如何cluster: true从我的源设置为 false。好吧,也许我可以扔掉源代码并制作一个新的源代码,但这很丑陋。
所以丑陋的方式是
const SOURCE = this.map.getSource(id);
SOURCE._options.cluster = false;
this.map.removeSource(id);
this.map.addSource(id, SOURCE._options);
Run Code Online (Sandbox Code Playgroud)
哎呀,那不起作用,现在我得到:
Source "test" cannot be removed while layer "test-outer" is using it.
Run Code Online (Sandbox Code Playgroud)
更新
我能够启用/禁用集群感谢@Steve Bennett
Source "test" cannot be removed while layer "test-outer" is using it.
Run Code Online (Sandbox Code Playgroud) javascript ×6
html ×2
android ×1
console.log ×1
html5 ×1
kineticjs ×1
mapbox ×1
mapbox-gl ×1
mapbox-gl-js ×1
momentjs ×1
node.js ×1
puppeteer ×1
vue.js ×1
vuejs2 ×1
web-scraping ×1