这个问题类似于我之前的问题,点击Focused DIV上的动作,但这一次的主题是,如何防止当我点击其中一个div时触发焦点事件.上次我使用tabindex =' - 1'时有一个div使其可以专注于点击,现在我有一个tabindex> 0的div列表,这样他们也可以在Tab键时获得焦点.
<div tabindex='1'>Div one</div>
<div tabindex='1'>Div two</div>
<div tabindex='1'>Div tree</div>
<div tabindex='1'>Div four</div>
Run Code Online (Sandbox Code Playgroud)
一些造型:
div {
height: 20px;
width: 60%;
border: solid 1px blue;
text-align: center;
}
div:focus {
border: solid 2px red;
outline: none;
}
Run Code Online (Sandbox Code Playgroud)
现在我在第二次点击div时使用一个标志(动作)来触发一个动作(警报),如果它已经聚焦,只需点击一下,例如TAB.
var action = false;
$('div')
.click(function(e){
e.stopImmediatePropagation();
if(action){alert('action');}
action = true;})
.focus(function(){action = true;})
.blur(function(){action = false;});
Run Code Online (Sandbox Code Playgroud)
上面代码的问题是焦点事件被触发,这意味着stopImmediatePropagation不能按照我预期的方式工作.两个单击操作可以对焦点事件行进行注释,但是当div获得焦点在TAB上时仍然需要双击.这是一个例子:http://jsfiddle.net/3MTQK/1/
我正在尝试使用Rust,WebAssembly和C互操作性,最终在浏览器或Node.js中使用Rust(带有静态C依赖)库.我正在使用wasm-bindgenJavaScript胶水代码.
#![feature(libc, use_extern_macros)]
extern crate wasm_bindgen;
use wasm_bindgen::prelude::*;
use std::os::raw::c_char;
use std::ffi::CStr;
extern "C" {
fn hello() -> *const c_char; // returns "hello from C"
}
#[wasm_bindgen]
pub fn greet() -> String {
let c_msg = unsafe { CStr::from_ptr(hello()) };
format!("{} and Rust!", c_msg.to_str().unwrap())
}
Run Code Online (Sandbox Code Playgroud)
我的第一个天真的方法是使用一个build.rs脚本,使用gcc crate从C代码生成一个静态库.在介绍WASM位之前,我可以编译Rust程序并hello from C在控制台中查看输出,现在我从编译器中得到错误说
rust-lld: error: unknown file type: hello.o
Run Code Online (Sandbox Code Playgroud)
build.rs
extern crate gcc;
fn main() {
gcc::Build::new()
.file("src/hello.c")
.compile("libhello.a");
}
Run Code Online (Sandbox Code Playgroud)
这是有道理的,现在我考虑一下,因为该hello.o文件是为我的笔记本电脑架构而不是WebAssembly编译的.
理想情况下,我希望这可以开箱即用,在我的build.rs中添加一些魔法,例如将C库编译为Rust可以使用的静态WebAssembly库.
我认为这可行,但是想避免,因为它听起来更有问题,是使用Emscripten为C代码创建WASM库,然后单独编译Rust库并将它们粘合在一起.
对于Web组件,人们想要创建和覆盖的元素之一是<input>.输入元素很糟糕,因为它们很多东西取决于它们的类型而且通常难以定制,因此人们总是想要修改它们的外观和行为是正常的.
两年前或多或少,当我第一次听说Web组件时,我非常兴奋,我想要创建的第一种元素是自定义输入元素.现在规范已经完成,看起来我对输入元素的需求没有得到解决.Shadow DOM应该允许我改变它们的内部结构和外观但是输入元素被列入黑名单并且不能有阴影根,因为它们已经有一个隐藏的.如果我想添加额外的逻辑和行为,带有is属性的自定义内置元素应该可以解决问题; 我无法做影子DOM魔法,但至少我有这个,对吧?好吧Safari不会实现它,聚合物不会因为这个原因而使用它们,它们的气味就像很快就会被弃用的标准.
所以我留下了正常的自定义元素; 他们可以使用shadow DOM并拥有我想要的任何逻辑,但我希望它们是输入!他们应该在一个内部工作<form>,但如果我是正确的,表单元素不喜欢它们.我是否必须编写自己的自定义表单元素,以复制本机的所有内容?我必须告别FormData,验证API等吗?我是否失去了使用没有javascript工作的输入表单的能力?
我正在编写一个带有ajax身份验证的ajax应用程序,现在我开始在silex中使用symfony安全组件来处理身份验证/授权.
使用简单配置进行简单测试,我通过防火墙进入受保护区域,我得到的响应是重定向到/login页面,但我在应用程序中需要的是401响应,可能有其他信息(在标题或json正文中) )关于如何登录.
$app['security.firewalls'] = [
'api' => [
'pattern' => '^/api',
'logout' => ['logout_path'=>'/auth/logout'],
'users' => $app->share(function(Application $app) {
return new MyUserProvider();
})
]
];
Run Code Online (Sandbox Code Playgroud)
编辑:我有一个提示,但我不知道如何使用它.使用AuthenticationEntryPointInterfaceI 实现入口点可以告诉api如何回答未经身份验证的请求并向用户提供进行身份验证所需的说明.这可能是我的401响应登录说明.
我没有在HTML规范中找到任何提及,也没有在网络上找到任何提及,这说明这是可能的,我仍然要求以防万一.
是否可以获取模块的URL以获取相对于该URL的文件?
假设我index.html有一个:
<script type="module">import '/foo/foo.js'</script>
Run Code Online (Sandbox Code Playgroud)
并foo.js想知道它自己的url是动态加载一些文件,例如./file-inside-foo.
截至本文撰写document.currentScript时,null内部模块返回,可能就像设计一样?
是否可以在php中为对象一次设置多个属性?而不是做:
$object->prop1 = $something;
$object->prop2 = $otherthing;
$object->prop3 = $morethings;
Run Code Online (Sandbox Code Playgroud)
做类似的事情:
$object = (object) array(
'prop1' => $something,
'prop2' => $otherthing,
'prop3' => $morethings
);
Run Code Online (Sandbox Code Playgroud)
但不覆盖对象.
在我的rootcope中,我有一个visible控制div可见性的属性
app.run(function ($rootScope) {
$rootScope.visible = false;
});
Run Code Online (Sandbox Code Playgroud)
示例HTML:
<section ng-controller='oneCtrl'>
<button ng-click='toggle()'>toggle</button>
<div ng-show='visible'>
<button ng-click='toggle()'>×</button>
</div>
</section>
Run Code Online (Sandbox Code Playgroud)
控制器:
var oneCtrl = function($scope){
$scope.toggle = function () {
$scope.visible = !$scope.visible;
};
}
Run Code Online (Sandbox Code Playgroud)
上面的部分工作正常,元素显示或隐藏没有问题.现在在不同部分的同一页面中,我尝试更改visible变量以显示div,但它不起作用.
<section ng-controller='otherCtrl'>
<button ng-click='showDiv()'>show</button>
</section>
Run Code Online (Sandbox Code Playgroud)
控制器:
var otherCtrl = function($scope){
$scope.showDiv = function () {
$scope.visible = true;
};
}
Run Code Online (Sandbox Code Playgroud) 这是我的@ font-face声明,支持不同的字体变体,在这种情况下是我的字体的粗体和粗体版本.
@font-face {
font-family: "santana";
src: url("data:font/ttf;base64,AAEAAAALAI....") format('truetype');
font-weight: normal;
font-style: normal;
}
@font-face {
font-family: "santana";
src: url("data:font/ttf;base64,AAEAAAALAI....") format('truetype');
font-weight: bold;
}
@font-face {
font-family: "santana";
src: url("data:font/ttf;base64,AAEAAAALAI....") format('truetype');
font-weight: bolder;
}
Run Code Online (Sandbox Code Playgroud)
现在我正在使用Chrome和Firefox.在Chrome中,普通和粗体变体可以工作,但不是更大胆的变体(保持'粗体'变体).在Firefox中,只有粗体变体按预期工作,在任何其他情况下使用更大胆的变体(即使是正常的重量).
这是一个已知问题还是有更好的方法来做这个声明?
编译cordova应用程序时,我/www文件夹中的每个文件都被复制到assets/www文件夹(android),但我想自定义要复制的文件.我使用了几种伪语言,如CoffeeScript,Jade或Stylus,它们由我的IDE自动编译,不应该发送到最终的应用程序中.