我的Web应用程序上有一个按钮,它在click事件处理程序中包含以下代码:
const fileInputEl = document.createElement('input');
fileInputEl.type = 'file';
fileInputEl.accept = 'image/*';
fileInputEl.addEventListener('input', (e) => {
if (!e.target.files.length) {
return;
}
// Handle files here...
});
fileInputEl.dispatchEvent(new MouseEvent('click'));
Run Code Online (Sandbox Code Playgroud)
有时(大约8分之一),在选择文件后,选择文件后input事件不会触发.我猜这是围绕元素生命周期的浏览器错误.
有什么方法可以将元素附加到页面并稍后删除它?现在在现代浏览器中处理这个问题的正确方法是什么?
我在Windows上使用Google Chrome进行测试.
JSFiddle:http: //jsfiddle.net/pja1d5om/2/
我正在使用a WKWebView来显示一个包含三个按钮的HTML网站.我想在单击特定按钮时在本机应用程序中运行一些Swift代码.
这三个按钮看起来像这样:
<input type="button" value="Edit Info" class="button" onclick="javascript:GotoURL(1)">
<input type="button" value="Start Over" class="button" onclick="javascript:GotoURL(2)">
<input type="button" value="Submit" class="button" onclick="javascript:GotoURL(3)">
Run Code Online (Sandbox Code Playgroud)
GotoURL他们调用的函数如下所示:
function GotoURL(site)
{
if (site == '1')
document.myWebForm.action = 'Controller?op=editinfo';
if (site == '2')
document.myWebForm.action = 'Controller?op=reset';
if (site == '3')
document.myWebForm.action = 'Controller?op=csrupdate';
document.myWebForm.submit();
}
Run Code Online (Sandbox Code Playgroud)
WKWebView实施当我单击webview中的任何按钮时,在我的上面调用此函数WKNavigationDelegate:
func webView(_ webView: WKWebView, didStartProvisionalNavigation navigation: WKNavigation!) {
// ...?
}
Run Code Online (Sandbox Code Playgroud)
但当然,它navigation是不透明的,因此不包含用户点击的三个按钮中的哪一个的信息.
我想在用户单击" 提交"时进行响应,并忽略其他按钮按下.
我在Stack Overflow上看到了其他一些方法WKUserContentController,但它们似乎要求网站调用类似的东西:
window.webkit.messageHandlers.log.postMessage("submit");
Run Code Online (Sandbox Code Playgroud)
我不控制这个网站所以我不能在它的源代码中添加这一行,我不知道使用它在正确的地方注入它的最佳方法 …
我有一个类似于这个的JSON字符串:
{
"Version": "XXX",
"Statements": [
{...},
{...},
{...}
]
}
Run Code Online (Sandbox Code Playgroud)
如何找出XX在JSON字符串的字符中定义Statements属性中的哪个对象?(考虑到那些对象可以任意深度嵌套).
例如,如果我有一个字符串
{"Version":"XXX","Statements":[{"a":1},{"b":2},{"b":3}]}
--------------------------------------------------------
123456789 123456789 123456789 123456789 123456789 123456
Run Code Online (Sandbox Code Playgroud)
然后位置上的字符36将对应于第一个语句对象,而位置上的字符52将对应于第三个语句对象.
我有像MongoDB一样存储的文档:
const demoArticle = {
created: new Date(),
title: [{
language: 'english',
value: 'This is the english title'
}, {
language: 'dutch',
value: 'Dit is de nederlandse titel'
}]
}
Run Code Online (Sandbox Code Playgroud)
我想将分析器添加到特定语言中,通常指定如下:
"mappings": {
"article": {
"properties": {
"created": {
"type": "date"
},
"title.value": {
"type": "text",
"analyzer": "english"
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
但问题是:根据子级别上设置的语言,它应该根据相同的语言设置分析器.
我偶然发现了ElasticSearch中的动态模板,但我不太相信它适用于这个用例.
有什么建议?
随着阵列
['/social/swipes/women', '/social/swipes/men', '/upgrade/premium'];
Run Code Online (Sandbox Code Playgroud)
我想构建一个看起来像这样的地图对象:
{
'social': {
swipes: {
women: null,
men: null
}
},
'upgrade': {
premium: null
}
}
Run Code Online (Sandbox Code Playgroud)
const menu = ['/social/swipes/women', '/social/likes/men', '/upgrade/premium'];
const map = {};
const addLabelToMap = (root, label) => {
if(!map[root]) map[root] = {};
if(!map[root][label]) map[root][label] = {};
}
const buildMenuMap = menu => {
menu
// make a copy of menu
// .slice returns a copy of the original array
.slice()
// convert the string to an array by splitting …Run Code Online (Sandbox Code Playgroud)javascript arrays javascript-objects ecmascript-6 arrow-functions
在框架中,我正在开发,我已经构建了机制,允许定义私有和受保护的属性和方法.
我在ES5规范中发现的唯一能力是使用arguments.callee,
如下所示:
descriptor.method = function () {
if (__callerIsProptected(arguments.callee.caller.caller, cls))
return value.apply(this, __defaults(_.values(arguments), defaults));
throw 'Attempt to call ' + access + ' method "' + cls._name + '::' + name + '"';
};
Run Code Online (Sandbox Code Playgroud)
至于在严格模式下调用arguments.callee和arguments.caller引起异常抛出是否有任何方便的替代方法呢?
更新 - 添加整个被调用的功能代码
function __descriptor(cls, type, name, descriptor, access) {
//protected private non-function descriptor.value is replaced by get/set pair
if (access !== 'public' && type == 'property') {
delete descriptor.value;
delete descriptor.writable;
_.isFunction(descriptor.get) || (descriptor.get = function () {
return this.__get(name);
});
_.isFunction(descriptor.set) …Run Code Online (Sandbox Code Playgroud) 我在Google Play中有一款应用.在我的上一次构建中,Google向我展示了此问题:
java.lang.IllegalArgumentException:对应于
ElementDescription{className=android.support.v7.widget.AppCompatTextView, resourceName=com.myappp.testapp:id/lab_separator, contentDescription=, componentType=TEXT_VIEW, inputType=NONE, isWebViewElement=false}未找到阴影元素的实际屏幕元素.
我无法在应用中解决此问题.报告中提到的视图可以正常工作.一切都按预期工作,但我想修复谷歌报道的内容.
是否存在可以对路径执行布尔运算的Javascript库(贝塞尔曲线)?
我知道Paper.js和Raphael.js,但现在都无法执行这些操作.
var doc = new jsPDF();
$('#generatereport').click(function() {
doc.fromHTML($('#lppresults')[0], 15, 15, {
width: 170
}, function() {
doc.save('sample-file.pdf');
});
});
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/1.3.4/jspdf.min.js"></script>
<div class="survey-results" id="lppresults">
<button id="generatereport">Download Report</button>
<h1 style="border: solid;">TEST CONTENT</h1><br />
<h1 style="border: solid;">TEST CONTENT1</h1>
</div>
Run Code Online (Sandbox Code Playgroud)
我想用 JavaScript 将文件保存在服务器上,但目前我只能将此文件保存在用户的计算机上。
第一个方法返回承诺。
getCoordinates() {
return new Promise(function(resolve, reject) {
navigator.geolocation.getCurrentPosition(resolve, reject);
});
}
Run Code Online (Sandbox Code Playgroud)
返回reverseGeoCode方法的结果。
async getAddress() {
await this.getCoordinates().then(position => {
let latitude = position.coords.latitude;
let longitude = position.coords.longitude;
let url = Constants.OSMAP_URL + latitude + "&lon=" + longitude;
// Reverse geocoding using OpenStreetMap
return this.reverseGeoCode(url);
});
}
Run Code Online (Sandbox Code Playgroud)
使用自定义类进行 API 调用并返回结果。
reverseGeoCode(url) {
let requestService = new RequestService("json", url);
requestService.call().then(result => {
return result;
});
}
Run Code Online (Sandbox Code Playgroud)
我是这样称呼的:
let geoLocation = new GeoLocation();
geoLocation.getAddress().then(r => {
console.log(r);
});
Run Code Online (Sandbox Code Playgroud)
控制台日志未定义。
javascript ×9
ecmascript-6 ×2
android ×1
arguments ×1
arrays ×1
asynchronous ×1
bezier ×1
blink ×1
browser ×1
google-play ×1
html ×1
html5-canvas ×1
ios ×1
json ×1
jspdf ×1
mapper ×1
php ×1
promise ×1
svg ×1
swift ×1
wkwebview ×1