我想创建一个页面,其中某些输入和链接附加了访问键,我想告知用户他们需要按什么键组合来激活输入或链接.有没有办法通过JavaScript自动获取浏览器的accesskey组合键,或者我是否需要检测它是哪个浏览器然后只使用一个表来存储浏览器使用的组合键?
我还没有发现任何可以自动检测到的脚本(我查看了维基百科的源代码,它们也按照浏览器名称),我觉得好奇,因为大多数网站似乎都建议使用功能检测而不是浏览器检测.如果accesskeys是例外,我会觉得很奇怪.
此外,根据维基百科的说法,访问密钥有很多不同的密钥组合,因此我认为制作一系列组合并选择浏览器的组合将是最佳解决方案.
我一直在忙着使用CSS 制作交互式标签布局,而且有人告诉我这不是<input>标签的预期语义含义.现在,我知道HTML5比以前的HTML版本更多地关注语义,所以我想知道,对于输入语义来说,它是类似于以下内容的东西:
<label for="toggleTab" class="togglelabel">Toggle tab</label>
<input type="checkbox" id="toggleTab" class="toggleinput">
<div class="toggletab">Look at this thing hide and show</div>
Run Code Online (Sandbox Code Playgroud)
CSS:
.toggletab, .togglelabel {border:1px solid #AAA;display:block;}
.toggleinput, .toggletab {display:none;}
.toggleinput:checked + .toggletab {display:block;}
Run Code Online (Sandbox Code Playgroud)
(演示)
该
input元素表示类型化的数据字段中,通常用表单控件以允许用户编辑的数据.
所以对我而言,这似乎确实与输入标签应该用于什么(因为这与数据无关,而只是向用户显示某些事物).
然后当然我的后续问题是,如果确实不是根据标准应该使用什么输入标签,那么违背语义标准是不是很糟糕?
无意间,我刚刚按下播放/暂停(?/??)按钮我的键盘(按钮上略高于Num Lock上
,同时在未聚焦的选项卡中播放 YouTube 视频。令我大吃一惊的是,YouTube 视频立即暂停。
现在,我尝试查找它是如何工作的,但我无法在互联网上找到任何解释如何检测这样的按键的按键的任何内容。我尝试onkeydown = function(e) {console.log(e)}在我的控制台中运行,但按下播放/暂停按钮没有触发任何事件。此外,https://keycode.info/也没有给我任何帮助。我确实找到了http://www.kbdedit.com/manual/low_level_vk_list.html,其中列出了大量“虚拟键代码”,其中确实包括VK_MEDIA_PLAY_PAUSE,这可能是我按下的键,但我没有找到任何方法用这个在 JS 中触发一个事件。
现在我想指出这个功能似乎在 Firefox 中不起作用,只能在 Chrome 中运行(就我测试过的而言)。这可能仍处于实验阶段,但我真的很想听听 YouTube 使用什么系统来捕获此事件,即使当前未打开该选项卡(Chrome 此刻甚至没有聚焦)
PS:我在 Ubuntu 18.04 上遇到过这种情况;例如,我不确定这是否适用于 Windows。
忽略这是一个完全玩具应用程序的事实.如果没有时间这是正确的做事方式,请告诉我.
所以,我有<form>两个<input>字段.我有一个eventListener坚持<form>听"提交"事件.然后我想运行一个函数,它对用户放入input1或input2的数字做一些事情.用户输入一个数字,例如input2,命中enter,函数调用this.id,但返回表单的id,而不是表单子项的实际输入框.
我能做什么?
编辑:我应该form以某种方式查看所有子元素并测试每个孩子以查看其中是否有某些内容,然后alertGrade使用非空子项作为参数调用?
HTML:
<form id="form">
<input type="number" id="score1" value="" min="0" max="100">
<input type="number" id="score2" value="" min="0" max="100">
<input type="submit" value="Grade">
</form>
Run Code Online (Sandbox Code Playgroud)
JavaScript的:
function alertGrade(elementID) {
var score = document.getElementById(elementID).value;
var grade = calculateGrade(score);
alert("Score of " + score + ": " + grade);
}
function loaded() {
document.getElementById("form").addEventListener("submit",
function(event) {
event.preventDefault();
// this.id will show "form"
alert(this.id);
alertGrade(this.id);},
false);
}
window.addEventListener("load", loaded, false);
Run Code Online (Sandbox Code Playgroud) 我想知道是否有可能将我从读取文件获得的字节字符串转换为字符串(所以type(output) == str).到目前为止,我在Google上找到的所有内容都有答案,例如你如何编码PNG图像以便在CSS文件中使用数据uri?看起来好像它可以在python 2中工作(如果我没有弄错的话,字符串仍然是字节字符串),但它不再适用于python 3.4.
我想将这个结果字节字符串转换为普通字符串的原因是我想使用这个base64编码的数据存储在JSON对象中,但我一直收到类似于的错误:
TypeError: b'Zm9v' is not JSON serializable
Run Code Online (Sandbox Code Playgroud)
以下是出错的最小示例:
import base64
import json
data = b'foo'
myObj = [base64.b64encode(data)]
json_str = json.dumps(myObj)
Run Code Online (Sandbox Code Playgroud)
所以我的问题是:有没有办法将这个类型bytes的对象转换为类型的对象,str同时仍然保持base64编码(所以在这个例子中,我希望结果是["Zm9v"].这可能吗?
我正在尝试使用Leaflet库在已经由另一个脚本初始化的地图上更改某些内容.这个其他脚本没有将map-object存储在全局变量中,也不存储在我可以使用我的脚本访问的任何其他位置.所以目前我的页面上有一张地图,但我没有地图对象.
我想要做的是检索已经初始化的地图的对象,以对其进行更改.例如,如果存在一个函数,L.getMap('myID')我想使用这样的方法来检索链接到容器的映射对象myID.
TL; DR:有没有办法使用容器的id获取已初始化的传单地图的地图对象?
我使用"multiple"标签让用户选择多个文件进行上传.
<input type="file" name="files[]" multiple />
Run Code Online (Sandbox Code Playgroud)
但它只显示例如"3个文件被选中".最好还显示文件名.
它可行吗?谢谢.
BTW,在这种情况下如何取消选择文件(例如,清除列表)?
我想知道是否可以仅将样式应用于空文本区域。作为一个最小的示例,我想要一个评论框,当用户单击它时展开(:focus),但当用户输入文本时保持展开状态,但当该框为空时重新折叠。
我已经尝试过了:empty,但这不适用于输入/文本区域(仅限 DOM 元素)。
#comments {
width: 150px;
height: 30px;
font-family: sans-serif;
border-radius: 5px;
outline:none;
-webkit-transition: all 1s;
-moz-transition: all 1s;
transition: all 1s;
}
#comments:not(:empty),
#comments:focus {
width: 250px;
height:100px;
border-radius: 10px;
}Run Code Online (Sandbox Code Playgroud)
<textarea type="text" id="comments" placeholder="Place a comment"></textarea>Run Code Online (Sandbox Code Playgroud)
当用户在其中输入内容时,有什么方法可以使输入保持很大吗?
我正在尝试使用 Leafletjs 制作地图,但我无法让标记集群正常工作。我希望它显示标记集群的默认图标,但它根本不显示标记集群图标。这是一个演示:
var map = L.map('mapid').setView([51.505, -0.09], 13);
L.tileLayer('https://api.tiles.mapbox.com/v4/{id}/{z}/{x}/{y}.png?access_token=pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4NXVycTA2emYycXBndHRqcmZ3N3gifQ.rJcFIG214AriISLbB6B5aw', {
maxZoom: 18,
attribution: 'Map data © <a href="http://openstreetmap.org">OpenStreetMap</a> contributors, ' +
'<a href="http://creativecommons.org/licenses/by-sa/2.0/">CC-BY-SA</a>, ' +
'Imagery © <a href="http://mapbox.com">Mapbox</a>',
id: 'mapbox.streets'
}).addTo(map);
var markers = L.markerClusterGroup();
markers.addLayer(L.marker([51.505, -0.09]));
markers.addLayer(L.marker([51.506, -0.09]));
map.addLayer(markers);Run Code Online (Sandbox Code Playgroud)
<link rel="stylesheet" href="https://unpkg.com/leaflet@1.1.0/dist/leaflet.css" integrity="sha512-wcw6ts8Anuw10Mzh9Ytw4pylW8+NAD4ch3lqm9lzAsTxg0GFeJgoAtxuCLREZSC5lUXdVyo/7yfsqFjQ4S+aKw==" crossorigin="" />
<script src="https://unpkg.com/leaflet@1.1.0/dist/leaflet.js" integrity="sha512-mNqn2Wg7tSToJhvHcqfzLMU6J4mkOImSPTxVZAdo+lcPlk+GhZmYgACEe0x35K7YzW1zJ7XyJV/TT1MrdXvMcA==" crossorigin=""></script>
<script src="https://leaflet.github.io/Leaflet.markercluster/dist/leaflet.markercluster-src.js"></script>
<div id="mapid" style="height:380px;"></div>Run Code Online (Sandbox Code Playgroud)
这段代码完全基于http://leafletjs.com/examples/quick-start/和https://github.com/Leaflet/Leaflet.markercluster#usage上的例子,所以我想它会在给定这些例子的情况下工作,但这似乎并没有真正显示集群后面的图标。
我发现 amarkerClusterGroup有一个名为 的方法_defaultIconCreateFunction,但它似乎没有被调用(或者如果它被调用了,它什么也不做)。
那么我在这里做错了什么?
首先,我想承认表格单元格中的垂直文本问题存在,但是由于这只是尝试旋转整个单元格而不是垂直书写样式,因此它与我的问题无关(例如该问题确实不包括text-orientation: upright;应用程序)
我目前正在研究一些我想在表格单元格中使用 CSS 垂直文本的地方,使用writing-mode: vertical-rl或vertical-lr。但是,当我尝试将其应用于表格时,它没有做任何事情。请参阅以下最小示例:
th, td, div {
writing-mode: vertical-rl;
}Run Code Online (Sandbox Code Playgroud)
<table>
<tr><th>foo</th><th>bar</th></tr>
<tr><td>baz</td><td>quux</td></tr>
</table>
<div>Lorem ipsum dolor sit amet</div>Run Code Online (Sandbox Code Playgroud)
正如您在 Chrome 中查看时所看到的,表格中的文本根本没有旋转(虽然这div清楚地表明该样式确实适用于 Chrome 的其他地方)。使用 Chrome 检查器,样式似乎与单元格正确匹配,但在“计算”样式选项卡下,它显示计算样式为writing-mode: horizontal-tb;.
我可以做些什么来使垂直文本在所有主要浏览器中都能正常工作?顺便说一下,Mozilla 在他们的 MDN 页面底部的桌子上transform: rotate(-90deg)这样做,它使用,这似乎不太可能,但它确实在页面顶部发表了他们的声明(“这对(... ) 制作垂直表格标题。”) 有点好奇。
我想使用的原因writing-mode是,使用transform: rotate(90deg)它时不会重新计算表格单元格的尺寸,在某些情况下会导致文本溢出单元格。
html ×6
javascript ×6
css ×2
leaflet ×2
base64 ×1
data-uri ×1
dom-events ×1
file-upload ×1
forms ×1
html5 ×1
maps ×1
media-player ×1
mediawiki ×1
python ×1
python-3.x ×1
string ×1